Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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
C# HttpPost到MVC部分视图?_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# HttpPost到MVC部分视图?

C# HttpPost到MVC部分视图?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,请允许我在前言中说,我确实研究了与此相关的其他SO问题,但它们要么是ASP解决方案,要么不是我所需要的 我的问题如下:如果我使用Html.BeginForm,我是否可以向控制器中返回部分视图的方法发出Http Post请求?我知道,也曾多次使用过使用BeginForm的POST方法,但这些方法都是ActionResult方法,负责将存储的数据传输到服务器。我想做的事情如下: 假设我有这个cshtml: <div class="test"> @using (Html.BeginForm

请允许我在前言中说,我确实研究了与此相关的其他SO问题,但它们要么是ASP解决方案,要么不是我所需要的

我的问题如下:如果我使用
Html.BeginForm
,我是否可以向控制器中返回部分视图的方法发出Http Post请求?我知道,也曾多次使用过使用BeginForm的POST方法,但这些方法都是ActionResult方法,负责将存储的数据传输到服务器。我想做的事情如下:

假设我有这个cshtml:

<div class="test">
@using (Html.BeginForm("MyPartialViewMethod"), FormMethod.POST) {
    @Html.LabelFor(x => x.StartTimeLabel, Model.StartTime);
    @Html.TextBoxFor(x => x.StartTime);

   <input type="button" value="Submit"/>
}

</div>
简言之:

  • 向服务器发出POST请求,并将我的数据值传递给它
  • 让服务器处理数据并返回相应地填充了所有必需数据的局部视图 我想我可以采用我在大学时用php做的方法,即通过JS调用AJAX到php,php吐出html,JS在需要的地方添加html。然而,这似乎有点太粗糙了

    是的,你可以。 您也可以在ajax中使用自定义的submit buton来完成此操作,但他将您的ajax称为jquery, 使用类似的东西并序列化您的模型

    或者,如果没有ajax,只需使用控制器部分并提交

     $.ajax({       
                url: '@Url.Action("actionName", "controllerName")',
                data: $('#MyPartialViewMethod').serialize(),
                dataType: "json",               
                type: 'POST',
                success: function (data) {
                  $('html').html(data);          
                },
                error: function (request, error) {
    
                }
            });
    
        [HttpPost]
        public actionName(Model myModel)
        {
         do thing with your model
         return PartialView(myModel);
        }
    
    循环

    是的,你可以。 您也可以在ajax中使用自定义的submit buton来完成此操作,但他将您的ajax称为jquery, 使用类似的东西并序列化您的模型

    或者,如果没有ajax,只需使用控制器部分并提交

     $.ajax({       
                url: '@Url.Action("actionName", "controllerName")',
                data: $('#MyPartialViewMethod').serialize(),
                dataType: "json",               
                type: 'POST',
                success: function (data) {
                  $('html').html(data);          
                },
                error: function (request, error) {
    
                }
            });
    
        [HttpPost]
        public actionName(Model myModel)
        {
         do thing with your model
         return PartialView(myModel);
        }
    

    循环

    如果您想用
    MyPartialViewMethod
    返回的部分视图更新现有DOM,那么您需要使用ajax(不确定为什么您认为这看起来有点太粗糙?),通常,使用表单post意味着您将点击该操作,然后被重定向。但是,有可能劫持submit方法并使用您自己的ajax帖子而不是表单submit。然后你可以像其他ajax帖子一样做任何你想做的事情。@StephenMuecke我不认为这很粗糙,但是,我从来没有这样做过;我的部分视图总是getter,我需要的任何动态字段都是使用JavaScript即时生成的。这将涉及它返回整个html负载。您只需要
    $('form').submit(函数(e){e.preventDefault();var data=$(This.serialize();$(someElement).load('@Url.Action(“MyPartialViewMethod”),data);})
    PartialViewResult
    ActionResult
    :)如果您想用
    MyPartialViewMethod
    返回的部分视图更新现有DOM,那么您通常需要使用ajax(不确定为什么您认为这看起来有点太粗糙?),使用表单帖子意味着您将点击操作,然后被重定向。但是,有可能劫持submit方法并使用您自己的ajax帖子而不是表单submit。然后你可以像其他ajax帖子一样做任何你想做的事情。@StephenMuecke我不认为这很粗糙,但是,我从来没有这样做过;我的部分视图总是getter,我需要的任何动态字段都是使用JavaScript即时生成的。这将涉及它返回整个html负载。您只需要
    $('form').submit(函数(e){e.preventDefault();var data=$(This.serialize();$(someElement).load('@Url.Action(“MyPartialViewMethod”),data);})
    PartialViewResult
    ActionResult
    :)