Asp.net mvc ASP.NET MVC多个表单,停留在同一页面上
我的表单位于布局页面的多个区域(非嵌套) 我有一个局部视图,它执行一个控制器的post操作 在那篇文章中,我应该返回什么操作结果来让用户保持在当前页面上Asp.net mvc ASP.NET MVC多个表单,停留在同一页面上,asp.net-mvc,partial-views,Asp.net Mvc,Partial Views,我的表单位于布局页面的多个区域(非嵌套) 我有一个局部视图,它执行一个控制器的post操作 在那篇文章中,我应该返回什么操作结果来让用户保持在当前页面上 jquery/ajax是我唯一的选择吗?我更喜欢一个不依赖javascript的解决方案,甚至可能是一个降级很好的解决方案。您只需要执行重定向操作(“”)返回主视图。您可以使用请求。referer属性查看用户来自哪个页面,然后使用该属性将他们重定向回主视图 这确实会引入其他问题,例如丢失ModelState,因此您必须为此进行设计。还要注意的是
jquery/ajax是我唯一的选择吗?我更喜欢一个不依赖javascript的解决方案,甚至可能是一个降级很好的解决方案。您只需要执行重定向操作(“”)返回主视图。您可以使用
请求。referer
属性查看用户来自哪个页面,然后使用该属性将他们重定向回主视图
这确实会引入其他问题,例如丢失ModelState
,因此您必须为此进行设计。还要注意的是,一些用户可以阻止向服务器发送请求中的referer信息,因此referer
属性可以为空
我建议您先使用AJAX,然后再使用它。要发布表单而不提交整个页面,从而刷新浏览器,您需要使用AJAX/jQuery。降级的解决方案是像使用普通表单一样提交整个页面 下面是我如何使用jQuery实现的 Html: 控制器返回部分视图。您也可以返回内容(“一些东西”)
如果您有问题或需要更多详细信息,请大声呼叫。iframes也许-不过我会选择ajax。Javascript是相当的web标准。但是当前页面(操作)是未知的。此表单存在于布局页面中。
<div id="RequestButtonDiv">
<button id="RequestButton" name="Request" type="button">Request</button>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#RequestButton').click(function (event) {
$('#RequestButton').text('Processing...');
$('#RequestButton').attr('disabled', true);
submitRequest();
});
});
function submitRequest() {
$.ajax({
url: '<%: Url.Action("AddToCart", "Request", new { id = Model.RowId, randomId = new Random().Next(1, 999999) } ) %>',
success: function (response) {
// update status element
$('#RequestButtonDiv').html(response);
}
});
}
</script>
public ActionResult AddToCart(int id)
{
var user = AccountController.GetUserFromSession();
user.RequestCart.AddAsset(id);
return View("~/Views/Assets/Details_AddToCart.ascx");
}