编辑网格设计的弹出框

时间:2012-04-09 16:52:11

标签: asp.net-mvc-3 asp.net-mvc-partialview

我正在写一个MVC3项目。现在我有一个表,其中包含Data作为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值。

这是我网格的编辑功能。实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分: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);

}

假设您有2个视图用于显示您的普通页面和部分页面(用于模型弹出)

我更喜欢将我的操作方法命名为Edit而不是EditPartial,因为它正在处理这两个请求(ajax和normal)