0

ビューモデルにバインドされたビューがあります。そのビューには、(部分ビューを使用して) モーダル jquery ダイアログをポップアップするリンクがあります。

私が必要としているのは、モデルをモデル ポップアップに渡し、更新してから、ビュー ページに戻すことができるようにすることです。

コントローラーにアクション メソッドをロードするモーダル ポップアップがあります (部分ビュー)。しかし、モデルを渡すのに苦労しています。

助言がありますか?

よろしくお願いします。

スクリプト (表示ページ):

// ZipLocator modal popup
$(function () {
    $('#ZipLocatorDialog').dialog({
        autoOpen: false,
        width: 400,
        resizable: false,
        draggable: false,
        title: 'hi there',
        modal: true,
        show: { effect: 'blind' },
        open: function (event, ui) {
            // Load the ZipLocator action which will return the partial view _ZipLocator
            $(this).load('@Url.Action("ZipLocator", "Shop", New With { .area = "Shop"})');
        },
        buttons: {
            "Close": function () {
                $(this).dialog('close');
            }
        }
    });

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

部分ビューのコントローラ アクション:

<HttpGet()>
    <Compress()>
    Public Function ZipLocator(model As ShopModel) As ActionResult

        Return PartialView("~/Areas/Shop/Views/Shared/Partials/Popups/_ZipLocator.vbhtml", model)

    End Function

私が言ったように、jQuery モーダル ポップアップは機能しています。モデルをそれに渡すのに苦労しています。

ステップ 1 は、モデルを部分ビュー (jQuery モーダル ポップアップ) に渡すことです。ステップ 2 は、ダイアログが閉じられた後、更新されたモデルをビューに戻すことです。

4

2 に答える 2

1

ドキュメントを読んでさらに調査した後、jQueryUIダイアログのデータパラメーターがあります。

// ZipLocator modal popup
$(function () {
    $('#ZipLocatorDialog').dialog({
        autoOpen: false,
        width: 400,
        resizable: false,
        draggable: false,
        title: 'hi there',
        modal: true,
        **data: $("#ShopPane").serialize(),**
        show: { effect: 'blind' },
        open: function (event, ui) {
            // Load the ZipLocator action which will return the partial view _ZipLocator
            $(this).load('@Url.Action("ZipLocator", "Shop", New With { .area = "Shop"})');
        },
        buttons: {
            "Close": function () {
                $(this).dialog('close');
            }
        }
    });

    $('#ZipLocatorOpener').click(function () {
        $('#ZipLocatorDialog').dialog('open');
    });
});
于 2012-10-19T15:46:46.053 に答える
0

「複雑な」モデルをコントローラー アクションに送信するには、AJAX POST を使用する必要があります。GET は機能しません (.Load 使用しているもの)。

または、アクション メソッドのパラメーターを変更して、ZipLocator文字列などの「単純な」オブジェクトを受け入れ、アクション メソッド内で複雑なオブジェクトをインスタンス化する方が簡単です。

VB での対応はわかりませんが、C# では次のようにアクションを変更します。

[HttpGet]
public ActionResult(string areaName)
{
   var model = new ShopModel { Area = areaName };
    Return PartialView("~/Areas/Shop/Views/Shared/Partials/Popups/_ZipLocator.vbhtml", model);
}
于 2012-06-18T20:44:50.990 に答える