2013-02-20 56 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我想傳遞給控制器​​動作​​3210

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

所以,問題是:如何適應我的代碼通過calEventid參數?

回答

6

jQuery提供了一種爲您存儲數據的方法,不需要使用虛擬屬性或找到解決問題的方法。

使用jQuery的對話對象上。數據()方法綁定的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 
    }); 
+0

對不起,我沒有注意到你呈現Url服務器端。您必須替換預先呈現的網址中的某個部分。我相應地編輯了代碼。 – 2013-02-20 14:14:38

2

你的問題不是很清楚。如果你想傳遞給控制器​​的參數是一個JavaScript變量,你可以使用以下命令:

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 
    });