3

mvc3 で剣道オープン ソースを使用します。

選択可能な行を持つ剣道グリッドがあります。行が選択されると、コントローラ メソッドに値が送信され、その値に基づいて新しいビューがレンダリングされます。コントローラーメソッドがヒットし、正しいデータを返し、正しいビューを提供することは確かです。Chrome Web 開発者ツールを使用すると、レンダリングされたページが応答で表示されますが、ブラウザーのビューは変更されません。SO実際に見ると結びつくまでずっと機能します。

剣道スクリプトでの私のjs:

        selectable: true,
        change: function (e) {
            var row = this.select();
            var detailId = this.dataItem(row).PersonId;

            $.post('@Url.Action("Detail", "Person")', { id: detailId });

        }

コントローラーメソッド:

    [HttpPost]
    public ActionResult Detail(int id)
    {

        var model = new Person();

        model = db.Person.Where(x => x.PersonId == id).FirstOrDefault();

        return View(model);
    }

なぜそれがレンダリングされないのですか?

=======編集===========

ここでは ajax 関数を使用しませんでした。これは、js 関数に返されるいかなる種類の応答も望まないためです。サーバー側のメソッドに id を送信し、メソッドを実行してから、新しいビューを提供し、それをクライアントに送信してレンダリングします。クライアントでのレンダリングという最後のステップ以外はすべて実行しています。別のjqueryメソッドを使用する必要がありますか?

4

1 に答える 1

1

私は剣道グリッドにあまり精通していませんが、何らかの方法で応答を処理する必要があると確信しています$.post()

$.post(url,data,handler)この;のオーバーロードを使用する必要があります。理想的には、jsコードにこのようなものがあります

$.post('@Url.Action("Detail", "Person")', { id: detailId }, function(data){
 //now render the data wherever you want
});
于 2013-05-20T18:02:57.933 に答える