我想要一些包含片段标识符的链接.像本网站上的一些网址一样:
调试:IE6 + SSL + AJAX + post form = 404错误#5626
有没有办法用MVC中的任何内置方法来做到这一点?或者我是否必须推出自己的HTML助手?
Lor*_*zCK 18
正如Brad Wilson所写,您可以通过简单地连接字符串在视图中构建自己的链接.但是要将片段名称附加到通过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
};
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在你的控制器中,你打电话:
return RedirectToAction("MyAction", "MyController")
.AddFragment("fragment-name");
Run Code Online (Sandbox Code Playgroud)
这应该正确生成URL.
| 归档时间: |
|
| 查看次数: |
3688 次 |
| 最近记录: |