2013-02-20 2 views
2

У меня есть вид MVC, из которого я хочу открыть диалоговое окно jQuery. В диалоговом окне я хочу отобразить представление, но для действия контроллера требуется параметр. Вот что у меня есть:Открыть диалог jQuery с параметром

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

И дальше вниз, у меня есть этот код, вызывающий диалог. Обратите внимание, что id я хочу перейти к действию контроллера является calEvent.id

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

Таким образом, вопрос: Как я могу адаптировать свой код, чтобы передать calEvent параметру id?

ответ

6

jQuery предоставляет метод, который хранит данные для вас, не нужно использовать атрибут dummy или найти обходной путь к вашей проблеме.

использовать метод .data() в диалоговом JQuery объекта для привязки каких-либо данных, который вы хотите в вашем диалоге при вызове его, и тот же метод в функции открытой(), чтобы прочитать его:

$('#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 
    }); 
+0

К сожалению, я не заметил, что вы оказываете сервер-сервер. Вам нужно будет заменить часть в предварительно обработанном URL. Я отредактировал код соответственно. –

2

Ваш вопрос не очень ясен. Если параметр, который вы хотите передать в контроллер является Java-переменной можно использовать следующее:

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

Посмотрите на документацию метода .load(). Второй аргумент позволяет вам передать дополнительные параметры для запроса AJAX.

0

Просто Он должен работать как

$(document).ready(function() { 
     $dialog = $('<div></div>') 
     .dialog({ 
     open: function(event, ui) { 
      $(this).load("@Url.Action("Edit", "Agenda", new {id = '<%= calEvent.id %>'})"); //Line to fix 
     }, 
     autoOpen: false 
    }); 
Смежные вопросы