2

嗨,我还没有为我的问题找到足够的答案。我需要从 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 以更新部分页面。感谢你们对我的帮助。

4

1 回答 1

1

PartialView如您所愿,返回一个ActionResult而不是部分视图的 HTML 作为字符串。您需要做的是执行 ActionResult 以获取它将呈现的 HTML。

有几种方法可以做到这一点,但一种快速而肮脏的方法是遵循本文

至于做你正在做的事情的更好方法,这取决于 val1-3 是什么。它们是 DOM 元素、局部变量还是全局变量?您可以让您的 PartialView 发出调用某些函数来设置 val1-3 值的 javascript。就像是:

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 调用的函数在哪里。

于 2012-04-19T09:54:08.910 回答