जैसा कि ब्रैड विल्सन ने लिखा था, आप स्ट्रिंग को संयोजित करके अपने विचारों में अपना स्वयं का लिंक बना सकते हैं। लेकिन RedirectToAction (या समान) के माध्यम से उत्पन्न किसी रीडायरेक्ट के एक टुकड़ा नाम संलग्न करने के लिए आप कुछ इस तरह की आवश्यकता होगी:
public class RedirectToRouteResultEx : RedirectToRouteResult {
public RedirectToRouteResultEx(RouteValueDictionary values)
: base(values) {
}
public RedirectToRouteResultEx(string routeName, RouteValueDictionary values)
: base(routeName, values) {
}
public override void ExecuteResult(ControllerContext context) {
var destination = new StringBuilder();
var helper = new UrlHelper(context.RequestContext);
destination.Append(helper.RouteUrl(RouteName, RouteValues));
//Add href fragment if set
if (!string.IsNullOrEmpty(Fragment)) {
destination.AppendFormat("#{0}", Fragment);
}
context.HttpContext.Response.Redirect(destination.ToString(), false);
}
public string Fragment { get; set; }
}
public static class RedirectToRouteResultExtensions {
public static RedirectToRouteResultEx AddFragment(this RedirectToRouteResult result, string fragment) {
return new RedirectToRouteResultEx(result.RouteName, result.RouteValues) {
Fragment = fragment
};
}
}
और फिर, अपने नियंत्रक में, आप कॉल चाहते हैं:
return RedirectToAction("MyAction", "MyController")
.AddFragment("fragment-name");
यह यूआरएल सही ढंग से उत्पन्न करना चाहिए।
क्या यह dev10 में जारी होने के लिए लक्षित किया जा रहा है? – ajma