我原来的问题有点令人困惑,所以让我编辑这篇文章要更清楚:
如何生成不仅使用路由引擎,还会将您带到页面上具有特定ID 的 html元素的ActionLink?我想生成这样的东西:
<a href="/ControllerName/ActionName/#section2>Link</a>
或有时相同,但动作参数为15,例如:
<a href="/ControllerName/ActionName/15#section2>Link</a>
actionName提供的视图具有id为“section2”的元素:
<div id="section1">
<h1>Section 1</h1>
...
</div>
<div id="section2">
<h1>Section 2</h1>
...
</div>
我相信我可以编写一个使用Url.RouteUrl()然后附加“#sectionId”的Html帮助方法,但这是最简单/最好的方法吗?我应该为此创建路由规则吗?默认路线:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Experiment", action = "Index", id = "" }
);
允许我在我的浏览器中手动将“#section2”添加到网址的末尾,它会将我带到section2 div。似乎不是添加或更改路径,而只需要将“#section2”附加到ActionLink网址。
答案 0 :(得分:2)
您可能希望更改/添加路线为:
routes.MapRoute("MyRoute", "{controller}/{action}#{id}", /* some default here */);
然后MVC助手将是:
<%= Html.ActionLink("Link Text", "Index", new { id = "sectionId" }) %>
答案 1 :(得分:1)
以下路线:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}/{section}",
new { controller = "Home", action = "Index", id = "", section = "" }
);
你会这样做:
<%= Html.ActionLink("Link Text", "Index", new { section = "#sectionId" }) %>
答案 2 :(得分:1)
我认为OP希望ID在URL末尾成为锚点引用,因为它似乎是一个项目列表,他希望浏览器向下滚动到该项目。 (我只是因为“#”规定而在这里猜到了。对Mark的代码进行小编辑:
routes.MapRoute(
"Default",
"{controller}/{action}/#{sectionId}",
new { controller = "Home", action = "Index", sectionId = Model.SectionId } );