我有多个页面包含相同的局部视图。部分包含发布到操作的表单。发帖后,我想回到帖子前我所在的页面。最好的方法是什么?
示例:
部分视图: form post action = note / create /
页
第1页: 产品/索引/
第2页: 客户/信息/
第3页: 为了/信息/
这三个页面包含局部视图,当发布部分视图时,它会重定向到note / create /。我需要在成功时返回原始页面。
由于 西蒙
答案 0 :(得分:2)
要么通过AJAX发布帖子 - 因此不要离开页面,要么将当前控制器/ action / 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 ) }, ... )) { %>
....
<% } %>
答案 1 :(得分:1)
您可以将当前页面地址存储在隐藏字段中,并使用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>
然后检索隐藏输入的地址并将用户重定向到它。