嗨,我没有找到足够的答案解决我的问题。我需要从ajax调用的动作结果中返回json数据和html。
$if (Request.IsAjaxRequest())
{
return Json(new
{
val1= Model.val1,
val2 = Model.val2,
val3= Model.val3,
Html = PartialView("_SearchResult", Model)
});
}
我在ajax成功部分需要做些什么? 这是不好的尝试:
$.ajax({
type: "post",
dataType: "json",
url: actionUrl,
data: {
specs: selections,
params: parameters
},
success: function (response) {
$("#maincontent").html( response.html);
val1= response.val1;
val2= response.val2;
val3= response.val3;
},
error: function (xHR) {
alert(xHR.status);
}
});
Val1,2,3是我需要知道的变量,因为模型数据正在变化,我需要知道这些变化的值。如果您知道更好的解决方案如何返回值而不是json,请告诉我。但我需要返回响应html以更新页面的一部分。 谢谢你的帮助。
答案 0 :(得分:1)
PartialView
返回ActionResult
而不是您希望的部分视图的HTML作为字符串。您需要做的是执行ActionResult以获取它将呈现的HTML。
有几种方法可以做到这一点,但one quick and dirty way is to follow this article。
至于做你正在做的事情的更好方法,这取决于val1-3是什么。它们是DOM元素,本地或全局范围的变量吗?你可以让你的PartialView发出调用某些函数的javascript来设置val1-3的值。类似的东西:
public ActionResult Search()
{
// ...
return PartialView("_SearchResult", Model);
}
_SearchResult局部视图:
<!-- your html here -->
<script type="text/javascript">
UpdateVals(@Model.val1, @Model.val2, @Model.val3);
</script>
其中UpdateVals
是一个函数,位于进行AJAX调用的页面中。