HttpPost到MVC局部视图?

时间:2017-10-30 21:59:23

标签: 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("MyPartialViewMethod"), FormMethod.POST) {
    @Html.LabelFor(x => x.StartTimeLabel, Model.StartTime);
    @Html.TextBoxFor(x => x.StartTime);

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

</div>

这样在我的控制器中我可以说有以下示例方法。

[HttpPost]
public PartialViewResult MyPartialViewMethod(Model DynamicDataModel) {
     //Pass the data in the DynamicDataModel into a  new cshtml page and
     //have the partial view it returns be rendered on screen
}

简而言之:

  1. 向服务器发出POST请求,将数据值传递给它
  2. 让服务器处理数据并返回相应的部分视图,其中填充了所有必需的数据。
  3. 我想我可以采用我以前在大学里用PHP做的方法,即AJAX通过JS调用php,php吐出html,JS在需要的地方添加html。但是,这似乎有点过于粗糙。

1 个答案:

答案 0 :(得分:0)

是的,你可以。 你也可以在ajax中使用自定义提交按钮将你的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);
    }

循环