gpt4 book ai didi

asp.net-mvc - 使用 Asp.Net MVC ActionLink、RedirectToAction 等时有没有办法包含片段标识符?

转载 作者:行者123 更新时间:2023-12-02 13:17:47 27 4
gpt4 key购买 nike

我想要一些链接包含片段标识符。就像本网站上的一些 URL 一样:

Debugging: IE6 + SSL + AJAX + post form = 404 error #5626

是否可以使用 MVC 中的任何内置方法来执行此操作?或者我必须推出自己的 HTML 助手吗?

最佳答案

正如 Brad Wilson 所写,您可以通过简单地连接字符串来在 View 中构建自己的链接。但是要将片段名称附加到通过 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
};
}
}

然后,在您的 Controller 中,您可以调用:

return RedirectToAction("MyAction", "MyController")
.AddFragment("fragment-name");

这应该正确生成 URL。

关于asp.net-mvc - 使用 Asp.Net MVC ActionLink、RedirectToAction 等时有没有办法包含片段标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com