通过ASP.NET MVC机制链接到页面上的位置(#id)?

时间:2010-01-15 12:33:31

标签: html asp.net-mvc routing hyperlink

我的例子:

我有一个View,它提供了一组div标签,其中包含从数据模型中填充的内容。

[其中多个,具有不同的location_id,自然而然]

<div>
    <a name="location_id"></a>
    Content
</div>

现在,我有一个表单[在它自己的视图中]提交了向数据模型添加另一条记录的内容。创建并提交记录后,我会重定向回Action,并View返回<div>列表。

我的挑战:

我希望该页面能够聚焦刚刚创建的<div>块。理想情况下,我想在不使用javascript的情况下执行此操作, - 我想在URL中使用#location_id结尾。 像这样:http://site/Controller/Action/Id#12(或沿着这些方向的东西)。

任何人都有关于如何做到这一点的任何提示?

编辑:我无法使用控制器的Redirect方法(或涉及原始网址的任何内容。需要通过Controller/ActionRoute机制进行路由)。

4 个答案:

答案 0 :(得分:1)

从动作返回时,您可能使用RedirectToAction(),您可以传入路线值。

你可以拥有这样的路线

routes.MapRoute(
"DisplayDivsRoute",
"{controller}/{action}/{focusedDivId}", // URL with parameters
new {controller = "Content", action = "Display", focusedDivId = "1"}, null );

当您处于Post动作时(保存新内容对象时),您可以

return RedirectToAction()

HTH

答案 1 :(得分:1)

抱歉浪费每个人的时间......

我记得你可以将路线段与“/”,

之外的其他字符文字分开

很自然地我可以建立这样的路线:

routes.MapRoute(
"MyRoute",
"{controller}/{action}/{id}#{locid}",
 new { ... });

问题解决了。

答案 2 :(得分:1)

在MVC 3中,您可以在此Html.ActionLink重载函数中使用fragment参数:

public static MvcHtmlString ActionLink(     这个HtmlHelper htmlHelper,     string linkText,     string actionName,     字符串controllerName,     字符串协议,     字符串hostName,     字符串片段,     对象路由值,     对象htmlAttributes )

http://msdn.microsoft.com/en-us/library/dd460522.aspx

答案 3 :(得分:0)

你已经回答了自己的问题。重定向到类似于您给出的URL(http://site/Controller/Action/Id#12)的URL,并在视图中生成一个锚标记,其名称属性就在您要跳转到的记录之前。