我有多个页面包含相同的局部视图。部分包含发布到操作的表单。发帖后,我想返回发帖前的页面。最好的方法是什么?
例子:
部分视图:表单 post action = note/create/
页面
第1页:产品/索引/
page2:客户/详情/
第3页:订单/详情/
这 3 个页面包含部分视图,当发布部分视图时,它会重定向到 note/create/。成功后我需要返回原始页面。
谢谢西蒙
我有多个页面包含相同的局部视图。部分包含发布到操作的表单。发帖后,我想返回发帖前的页面。最好的方法是什么?
例子:
部分视图:表单 post action = note/create/
页面
第1页:产品/索引/
page2:客户/详情/
第3页:订单/详情/
这 3 个页面包含部分视图,当发布部分视图时,它会重定向到 note/create/。成功后我需要返回原始页面。
谢谢西蒙
要么通过 AJAX 发布帖子——因此不会离开页面,要么将当前控制器/操作/id(或整个 Url)作为参数传递给处理帖子的操作。有关后者的示例,请参见下文。
<% using (Html.BeginForm(...)) { %>
<input type='hidden'
name='currentController'
value='<%= ViewContext.RouteData["controller"] %>' />
<input type='hidden'
name='currentAction'
value='<%= ViewContext.RouteData["action"] %>' />
<input type='hidden'
name='<%= ViewContext.RouteData["id"] %>' />
...rest of form...
<% } %>
或者
<% using (Html.BeginForm( ...,
new { ReturnUrl = Url.Action( ViewContext.RouteData["action"],
ViewContext.RouteData ) }, ... )) { %>
....
<% } %>
您可以将当前页面地址存储在隐藏字段中,并使用 Post 请求发送。
在您的部分观点中:
<script type="text/javascript">
var field = document.getElementById("currentPage");
field.value=document.location.href;
</script>
<form method="post" action="note/create/">
...
<input type="hidden" value="" id="currentPage" name="currentPage" />
</form>
然后检索隐藏输入的地址并将用户重定向到它。