6

Jquery Dailogで部分的なビューを返し、viewmodelオブジェクトを特定のコントローラーアクションに渡したいのですが、どうすればよいですか?

意見

@Html.DropDownListFor(model => model.SelectedCountry, new SelectList(Model.CountryList, "CountryCode", "CountryName"), "---SELECT COUNTRY---",
                                    new { @class = "chosen", @onchange = "this.form.action='/Home/Index'; this.form.submit(); " })
<input type="button" id="button1" value="Push"/>
<div id="dialog" title="Report" style="overflow: hidden;"></div>

Js

<script type="text/javascript">
$(function () {
    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        resizable: false,
        title: 'Report',
        modal: true,
        open: function() {
            //here how to pass viewmodel
            $(this).load("@Url.Action("CreatePartial")");
        },
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        }
    });

    $('#button1').click(function () {
        $('#dialog').dialog('open');
    });
});

コントローラ

public ActionResult CreatePartial(HomeViewModel homeViewModel)
{
        return PartialView("_CreatePartial", homeViewModel);
}

現在、「homeViewModel.SelectedCountry」はNullですが、Jqueryでモデルを渡す方法は?

4

2 に答える 2

4

AJAXを使用している場合は、HTTPGETを使用してモデルをサーバーに渡さないでください。代わりにHTTPPOSTを使用してください(のように$().ajax({method: 'POST'})、POSTデータとしてデータを渡します($().ajax({method: 'POST', data: @Html.Raw(Json.Encode(Model))})

于 2012-09-02T19:09:18.630 に答える
3

組み込みのJSONヘルパーを使用してモデルをJSONオブジェクトに変換し、リクエストを次のように変更するだけです。

$(this).load('@Url.Action("CreatePartial")',@Html.Raw(Json.Encode(Model)));

@ Html.Rawは、HTMLエンコーディングを防ぐために必要です。

私はそれをテストしました、そしてそれは働きました。

于 2012-09-02T18:39:30.720 に答える