2012-04-09 79 views
0

我正在編寫一個MVC3項目。現在,我有與數據列actionLinks作爲表:編輯網格設計的彈出框

<td style="color: Black; background-color: Bisque; text-align: center; width: 410px"> 
    @Html.ActionLink(@item.LookUp_NameString, "EditPartial", "Capitation", new { id = item.CAPITATION_RATE_ID }, new { @class = "actionLink" }) 
</td> 

EditPartial顧名思義是一個局部視圖,這是我需要打開一個彈出菜單,使用戶可以編輯對象的詳細信息,保存它,我們可以回到原來的頁面。

我已經嘗試渲染部分,但不能讓它動態傳遞id值。

這是爲了我的網格的編輯功能。什麼纔是實現這個最好的方法?

回答

3

如果要在模型彈出窗口中打開EditPartial Action方法的結果,則需要一些模型彈出窗口代碼。

jQuery UI是一個選項。 http://jqueryui.com/demos/dialog/

1)包括在你的頁面的jQuery UI參考,

2)添加下面的腳本到您的網頁,將您的正常鏈接轉換成模型彈出

<script type="text/javascript"> 
    $(function(){ 
     $(".actionLink").click(function (e) { 
      var url = this.href; 
      var dialog = $("#dialog"); 
      if ($("#dialog").length == 0) { 
       dialog = $('<div id="dialog" style="display:hidden"></div>').appendTo('body'); 
      } 
      dialog.load(
       url, 
       {}, // omit this param object to issue a GET request instead a POST request, otherwise you may provide post parameters within the object 
       function (responseText, textStatus, XMLHttpRequest) { 
        dialog.dialog({      
         close: function (event, ui) {        
          dialog.remove(); 
         }, 
         modal: true, 
         width: 460, resizable: false 
        }); 
       } 
      );   
      return false;   
     }); 
    }); 
    </script> 

從你的動作結果,你可以返回你想要在模型彈出窗口中顯示的任何標記。大多數情況下,您將返回一個視圖。如果你想顯示一個局部視圖,如果它是一個ajax請求,並顯示普通視圖,如果它是一個普通的請求,你可以檢查Request.IsAjaxRequest方法來做到這一點。

public ActionResult EditPartial(int id) 
{ 
    CustomerViewModel objCustomer=GetCustomer(id); 
    if(Request.IsAjaxRequest()) 
    { 
    return View("Partial/Edit",objCustomer); 
    } 
    return View(objCustomer); 

} 

假設你有目前顯示正常的網頁和部分網頁(型號彈出)

我喜歡的名字我的操作方法爲Edit代替EditPartial 2次,因爲它同時處理請求(阿賈克斯和正常)

+0

你真是太棒了先生。 – OBL 2012-04-10 18:05:21

+0

因此,在實現邏輯之後,我將它帶到部分頁面,用戶可以在其中編輯細節。點擊保存按鈕,我做了一個Ajax調用,並在成功返回data = true時將更改保存到數據庫。如果成功,我怎麼能從EditPartial頁面關閉這個對話框? 謝謝! – OBL 2012-04-10 21:34:17