在ajax帖子

时间:2017-03-23 21:13:18

标签: jquery asp.net ajax asp.net-mvc asp.net-mvc-4

我有一个视图 UserInformation ,其中我填写了一些用户相关信息并将这些信息发布到另一个View" AnotherView"使用ajax post。

现在我想在动作方法中采用这些输入" AnotherView"并加载视图" AnotherView"与一些datamodel。

当我从查看 UserInformation 到动作方法" AnotherView" 进行Ajax Post时,它将采取行动方法&#34 ; AnotherView" ,但它仍然显示视图 UserInformation

从视图 UserInformation

调用Ajax
$.ajax({
    url: '/somecontroller/AnotherView/',
    data: {
        name: $.trim($('#mgr').val()),
        id: $('#id').val(),
        email: $.trim($('#hdnMgrmail').val())
    },
    cache: false,
    type: "POST",
    dataType: "html",
    success: function (data,
        textStatus, XMLHttpRequest) {
        alert('ok');
    }
});


[HttpPost]
public ActionResult AnotherView(few parametrs that is coming here)
{
      //create model using input params
      return View(with some model);
}

1 个答案:

答案 0 :(得分:1)

由于目标Controller Action返回ActionResult,因此您可以预期它将返回呈现的HTML(以及发生的任何数据绑定)。

因此,成功回调的data参数实际上将包含此内容,因此您只需使用jQuery选择器来确定使用html()函数输出它的位置:

success: function (data, textStatus, XMLHttpRequest) {
    // data is your HTML content
    $(...).html(data);
}

值得注意的是,如果您打算返回一小部分内容而不是任何其他内容(例如布局或其他相关视图),您可能需要考虑使用PartialView()方法:

[HttpPost]
public ActionResult AnotherView(...)
{
     return PartialView(...);
}

<强>更新

由于评论中提到了首选完全刷新页面,如果是这种情况,那么您可以考虑简单地提交一个发布到目标操作的表单,并且提交事件将处理导航(并返回整个动作):

<form action='/somecontroller/AnotherView/' method='post'>
    <input id='mgr' name='name' />
    <input id='id' name='id' />
    <input id='hdnMgrmail' name='email' />
    <input type='submit' />
</form>