2012-10-19 63 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