我有一个视图 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);
}
答案 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>