2012-10-19 106 views
0

我無法使用jquery,所以我需要幫助。 我在這裏使用jQuery UI對話框。 我有鏈接打開對話框顯示我的部分視圖。在ASP.NET MVC中使用jQuery

$(function() { 
    $("#transferTo").dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 300, 
     modal: true, 
     resizable: false, 
     open: function (event, ui) { 
      $(this).load('<%= Url.Action("TransferTo", "Pacient") %>'); 
     }, 
     buttons: 
     { 
      "Transfer": function() { 
       // do something in database 
       $(this).dialog("close"); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#transferToLink").click(function() { 
     $("#transferTo").dialog("open"); 
     return false; 
    }); 
}); 

<a href="javascript:void()" id="transferToLink">Transfer to</a> 

局部視圖的樣子:

<div id="transferTo"> 
    Zmena kliniky 
<%= Html.DropDownList("klinika", ViewData["kliniky"] as SelectList)%> 
</div> 

在主視圖中有一些數據行。每行都是用戶使用他的ID。 所以我想要做什麼...

當我點擊鏈接transferTo(它顯示後點擊編輯鏈接上每行)我需要將用戶的ID傳遞給jquery函數並使用它對話框的Click事件TransferTo。 當用戶單擊對話框中的TransferTo按鈕時,它必須從對話框的下拉列表中選擇id參數和選定值,並將其用於與數據庫通信的C#函數(repository.Edit(id,selectedValue))

回答

1

我早就這樣做了:

實現你的鏈接調用javascript函數,將打開的對話框。

<a href="#" onclick="openPopup('@id')" id="transferToLink">Transfer to</a> 

的JavaScript應該是這樣的:

function openPopup(id) { 
    $("#transferTo").dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 300, 
     modal: true, 
     resizable: false, 
     open: function (event, ui) { 
      $.ajax({ 
       "url": yourActionUrl, 
       "data": { myParameter: id }, 
       "type": "POST" 
      }); 
     }, 
     buttons: 
    { 
     "Transfer": function() { 
      // do something in database 
      $(this).dialog("close"); 
     }, 
     "Cancel": function() { 
      $(this).dialog("close"); 
     } 
    } 
    }).open(); 
} 

希望這有助於。真正

0

Your編輯鏈接按鈕應該有它的名字。類似於「lnkEdit_ {id}」,其中{id}是該項目的實際ID。

在$(「#transferToLink」)。click事件中,從$(this)解析出Id並將其設置在表單上的HiddenValue字段中。

在對話框的Transfer按鈕事件中讀取此值。

這不是優雅的,但您的選擇是有限的這種類型的設置,我以前使用這種技術沒有任何問題。唯一的缺點是,你需要一個額外的隱藏字段存儲的臨時值

+0

謝謝約翰:

PS:如果你提到的AutoOpen末開放式方法並不是強制性的。 我做了它使用ViewData,現在我有問題,我不知道如何從對話框中的傳輸按鈕調用我的功能。 「Transfer」:function(){ //調用我的函數庫(ViewData [「id」],selectedValue) $(this).dialog(「close」);我怎樣才能調用我的C#函數(存儲庫(ViewData [「id」],selectedValue),以及如何將參數selectedValue($(「dropdownlist option:selected).text())傳遞給那個函數? 謝謝 – Prazi

+0

您可以使用jQuery爲您的控制器動作創建一個Post。控制器動作驗證輸入然後調用您的存儲庫。 :link.href, 成功:function(data){ $(link).parents(「tr」)。去掉(); }, 錯誤:功能(數據){ 警報(「此用戶不能被刪除」); } }); –

+0

謝謝。 現在我有這個: 「Transfer」:function(){ $ .post('<%= Url.Action(「TransferToOk」,「User」)%>',{「id」:'<%= ViewData [「id」]%>',「role」:$(「#role option:selected」)。text()},null,「script」); $(this).dialog(「close」); } 但它是返回我的下拉列表中的第一個選項,沒有選中。你知道爲什麼嗎? – Prazi