2012-04-09 61 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