După cum a scris Brad Wilson, puteți crea propriul dvs. link în vizualizările dvs. prin simpla concatenare a șirurilor de caractere. Dar pentru a adăuga un nume de fragment la o redirecționare generată prin RedirectToAction (sau similar), veți avea nevoie de ceva similar:
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
};
}
}
Și apoi, în controlorul dvs., ați sunat:
return RedirectToAction("MyAction", "MyController")
.AddFragment("fragment-name");
Aceasta ar trebui să genereze corect adresa URL.