我正在写一个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值。
这是我网格的编辑功能。实现这一目标的最佳方式是什么?
答案 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)