我的例子:
我有一个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/Action
或Route
机制进行路由)。
答案 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 )
答案 3 :(得分:0)
你已经回答了自己的问题。重定向到类似于您给出的URL(http://site/Controller/Action/Id#12)的URL,并在视图中生成一个锚标记,其名称属性就在您要跳转到的记录之前。