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

PartialViewActionResult期待どおり、部分ビューの HTML ではなく文字列を返します。必要なことは、ActionResult を実行して、レンダリングする HTML を取得することです。

これを行うにはいくつかの方法がありますが、手っ取り早い方法の 1 つは、この記事に従うことです。

あなたがしていることを行うためのより良い方法に関する限り、それは 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>

UpdateValsAJAX 呼び出しを行うページ内の関数はどこにありますか。

于 2012-04-19T09:54:08.910 に答える