jQuery的:
$.ajax({
type: 'POST',
url: redirectToANewWindow,
dataType: 'html',
data: { filterValue: searchValue },
success: function (result) {
$('form').html(result);
}
});
控制器:
[HttpPost]
public ActionResult InitializeEditView(string filterValue)
{
//some code
return PartialView("PartialForm", model);
}
这很好用。它返回更新的视图并将其粘贴到当前页面上。但我想要实现的是它从控制器传递后,结果应该在一个新的/单独的浏览器窗口上呈现。我该怎么做?
提前致谢!
答案 0 :(得分:4)
目前,您已决定进行AJAX调用,并通过编写以下方式将已处理数据放入表单元素中:
$('form').html(result);
在你的AJAX成功回调中。
不要使用AJAX ..只需打开一个包含所需URL的新窗口:
window.open('http:// ... my web?param1=0¶m2=1')
这将要求您更改控制器操作以接收GET请求 并返回完整视图。
[HttpGet]
public ActionResult InitializeEditView(string filterValue)
{
//some code
return View("PartialForm", model);
}
答案 1 :(得分:4)
如果我理解您的问题,您希望此表单创建一个新窗口吗?摆脱jquery,只需将此属性添加到表单的html:
target="_blank"
,如
<form action="/yourcontroller" method="post" target="_blank">
...
</form>
编辑: 你可以这样做:
$.ajax({
type: 'POST',
url: redirectToANewWindow,
dataType: 'html',
data: { filterValue: searchValue },
success: function (result) {
var w = window.open();
$(w.document.body).html(result);
}
});
答案 2 :(得分:1)
你不需要在这里使用ajax。你需要打开一个新窗口,所以你只需要触发这个
window.open('/ActionName/InitializeEditView??filterValue='+searchValue)
答案 3 :(得分:-1)
如果您想要更新整个浏览器窗口,那不是AJAX帖子。
这是一个标准的HTML <FORM>
帖子,将其更改为。
[被修改]
好的,您要打开单独的窗口。使用window.open()作为GET,或通过jQuery&amp;然后在成功时将HTML放入其中。