2011-11-29 56 views
0

我正在使用MVC2和jQuery。將變量傳遞給jQuery中的一個動作

我想在jQuery對話框容器中打開一個局部視圖,傳遞一個要刪除的對象的一個​​itemID。

我正在做的事情就是傳遞一個動作,將視圖呈現給jquery,我可以在沒有變量的情況下工作。如果我嘗試傳入要刪除的對象的ID,則該操作甚至不會觸發。我可能的陪襯是我傳遞變量的地方。

這裏是我的jQuery代碼:

$(function() { 
     var itemToDelete 
     $('#deleteDialog').dialog({ 
      autoOpen: false, 
      width: 400, 
      resizable: false, 
      title: 'Delete Item', 
      modal: true, 
      open: function(event, ui) { 
       //This calls the action if I don't try to pass in the variable 
       $(this).load("<%: Url.Action("Delete") %>", 
        { 
         item: itemToDelete 
        }); 
       }, 
       buttons: { 
       "Close": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

     $('#item-delete-button').click(function() { 
      itemToDelete = $(this).find("input").val() 
      $('#deleteDialog').dialog('open'); 
     }); 
    }); 

下面是相關部分的看法是什麼樣子。

<div id="item-delete-button" class="item-delete-button"> 
         Delete 
         <%:Html.Hidden("item-delete-content", model.ItemID.ToString(), New With {.id = "item-delete-content", .class = "item-delete-content"})%> 
        </div> 

如果我點擊「刪除」,jquery會發生,並打開一個空的對話窗口。如果我不嘗試傳入「itemToDelete」變量,那麼該動作觸發正常,但當然,如果不知道要刪除的項目,我不會走得太遠。

所以,正如我所說的,問題是我沒有把正確的變量傳遞給我的行爲。這可能是一個簡單的錯誤,我對jquery比較陌生。

$(this).load("<%: Url.Action("Delete") %>", 
       { 
        item: itemToDelete 
       }); 

與此:

+0

您是否使用過螢火蟲或其他瀏覽器加載項來檢視HTTP標頭?我會以此爲出發點來判斷變量是否傳遞給您的操作。 – xbrady

+0

它不是。不知道爲什麼,但同樣,我對jquery比較陌生。 – user961794

回答

0

請問,如果你更換工作?

$(this).load('<%: Url.Action("Delete") %>?item=' + itemToDelete); 
+0

是的,非常感謝。知道答案很簡單。 – user961794