我有一个控制器动作,它被JQuery ajax调用,并希望将“结果”的内容返回到请求页面。 到目前为止,我有......
控制器
public ActionResult DynCalc(resultsModel model){
...
//code that populates model - all working ok
...
if (Request.IsAjaxRequest())
{
return PartialView("results", model.Results);
}
else
{
return null; //Handle this later
}
}
这会传回一个有效的模型。 从javascript调用:
$.ajax({
url: "/Test/DynCalc",
type: "POST",
data: $("#frmResults").serialize(), //This part works
dataType: "html",
success: function (result) {
$('#resultsSection').html(result);
$('#hide_panel a').flash("#111", 1000);
}
});
成功从未被击中。希望有人可以告诉我,我是愚蠢的,错过了一些明显的东西?
我的部分视图结果只是一个带有javascript的HTML页面。如果我有以下
在我的结果视图中 Hello world
,然后它可以正常运行,任何脚本都没有,
我是否在正确的轨道上?我应该更改控制器上的返回类型吗?或者使用JSON?
我没有发布结果页面的内容,因为它是一个完整的文档或只是<b>hi</b>
并不重要 - 它做同样的事情。
答案 0 :(得分:1)
尝试仅返回一个视图。因为在这种情况下你的结果是一个完整的视图(因为动作结果可能是HTML,XML,JSON ......等等)。 仅使用PartialView 作为渲染视图的部分的方法。
E.g。在您的MasterPage上,您希望“始终”呈现用户信息:@RenderAction("UserInfoAction", "UserController")
答案 1 :(得分:0)
var model= {
"PropertyName1":$("#txt1").val(),
"PropertyName1": $("#txt2").val(),
}
$.ajax({
type:"POST",
url: 'Url.Action("DynCalc","ControllerName")',
data: JSON.stringify(model),
contentType: "application/json;charset=utf-8",
success: function (data, status, xhr)
{
alert("The result is : " + status + ": " + data);
},
error: function (xhr)
{
alert(xhr.responseText);
}
});