2

jQueryダイアログをポップアップしたいMVCビューがあります。ダイアログでビューをレンダリングしたいのですが、コントローラーのアクションにはパラメーターが必要です。ここに私が持っているものがあります:

$(document).ready(function () {
            $dialog = $('<div></div>')
            .dialog({
            open: function(event, ui) {
                $(this).load("@Url.Action("Edit", "Agenda", new {id = ???})"); //Line to fix
            },
            autoOpen: false
        });

さらに下には、ダイアログを呼び出すこのコードがあります。I want idto pass to the controller アクションはcalEvent.id

$('#calendar').fullCalendar({
    eventClick: function (calEvent, jsEvent, view) {
        $dialog.dialog('open');
    }
});

質問は次のとおりです。パラメーターに渡すcalEventようにコードをどのように適応させることができますか?id

4

3 に答える 3

6

jQueryは、データを保存するメソッドを提供します。ダミー属性を使用したり、問題の回避策を見つけたりする必要はありません。

jqueryダイアログオブジェクトの.data()メソッドを使用して、ダイアログを呼び出すときに必要なデータをダイアログにバインドし、open()関数内の同じメソッドを使用してデータを読み取ります。

$('#calendar').fullCalendar({
eventClick: function (calEvent, jsEvent, view) {
    $dialog.data('id', calEvent.id).dialog('open');
}
});

$(document).ready(function () {
        $dialog = $('<div></div>')
        .dialog({
        open: function(event, ui) {
            url = "@Url.Action("Edit", "Agenda", new {id = "XXX"})";
            url.replace( "XXX", $(this).data('id') );
            $(this).load(url);
        },
        autoOpen: false
    });
于 2013-02-20T14:08:04.910 に答える
2

あなたの質問はあまり明確ではありません。コントローラーに渡したいパラメーターが JavaScript 変数の場合は、次のように使用できます。

open: function(event, ui) {
    var url = '@Url.Action("Edit", "Agenda")';
    $(this).load(url, { id: someJavascriptVariable });
}

.load()メソッドのドキュメントを参照してください。2 番目の引数を使用すると、AJAX 要求に追加のパラメーターを渡すことができます。

于 2013-02-20T13:52:26.167 に答える