Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC多个表单,停留在同一页面上_Asp.net Mvc_Partial Views - Fatal编程技术网

Asp.net mvc ASP.NET MVC多个表单,停留在同一页面上

Asp.net mvc ASP.NET MVC多个表单,停留在同一页面上,asp.net-mvc,partial-views,Asp.net Mvc,Partial Views,我的表单位于布局页面的多个区域(非嵌套) 我有一个局部视图,它执行一个控制器的post操作 在那篇文章中,我应该返回什么操作结果来让用户保持在当前页面上 jquery/ajax是我唯一的选择吗?我更喜欢一个不依赖javascript的解决方案,甚至可能是一个降级很好的解决方案。您只需要执行重定向操作(“”)返回主视图。您可以使用请求。referer属性查看用户来自哪个页面,然后使用该属性将他们重定向回主视图 这确实会引入其他问题,例如丢失ModelState,因此您必须为此进行设计。还要注意的是

我的表单位于布局页面的多个区域(非嵌套)

我有一个局部视图,它执行一个控制器的post操作

在那篇文章中,我应该返回什么操作结果来让用户保持在当前页面上


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"); 
    }