将URL片段添加到MVC ActionLink

时间:2010-01-03 20:46:20

标签: c# asp.net-mvc

这是我的代码的一部分

<%= Html.ActionLink(Model[x].Title, "Index", "q", new { slug = Model[x].TitleSlug, id = Model[x].PostID }, null)%>

生成此网址

http://localhost:61158/q/is_there_another_indiana_jones_movie_in_the_works/4

但是我想生成一个带有片段的url,如下所示:

http://localhost:61158/q/is_there_another_indiana_jones_movie_in_the_works/4#1

有没有办法使用HTML.ActionLink函数执行此操作?

3 个答案:

答案 0 :(得分:22)

ActionLink有两个带有片段参数的“超级重载”:

public static string ActionLink(this HtmlHelper htmlHelper,
     string linkText, string actionName, string controllerName,
     string protocol, string hostName, string fragment, object routeValues,
     object htmlAttributes);
public static string ActionLink(this HtmlHelper htmlHelper,
     string linkText, string actionName, string controllerName,
     string protocol, string hostName, string fragment,
     RouteValueDictionary routeValues, IDictionary<string, object> htmlAttributes);

有关重载的详细信息,请参阅MSDN

在你的情况下它会是(并特别注意“fragment”参数):

<%= Html.ActionLink(Model[x].Title, "Index", "q",
     /* protocol */ null, /* hostName */ null, /* fragment */ "1",
     new { slug = Model[x].TitleSlug, id = Model[x].PostID }, null) %>

使用“mega overloads”,您可以将大多数参数值保留为null,并且它们将获得相应的默认值。

答案 1 :(得分:2)

您需要致电this overload

答案 2 :(得分:0)

MVC 5支持片段。(请参阅https://msdn.microsoft.com/en-us/library/dd460522(v=vs.118).aspxhttps://msdn.microsoft.com/en-us/library/dd492938(v=vs.118).aspx。)所以您的代码将是

Html.ActionLink(Model[x].Title, "Index", "q", new { slug = Model[x].TitleSlug, id = Model[x].PostID }, null, "1", null, null)