以下是可能的解决方案的概述。选择你需要的。
view1 呈现的局部视图需要实现一个弹出对话框,以显示另一个局部视图。
所以从创建弹出部分开始。
Popup 的视图控制器会有这样的东西
// in FooController
public ActionResult PopupPartialViewName()
{
// prepare model for your pop-up
return PartialView(PopUpModel);
}
在弹出视图中,您将拥有必须更新原始部分列表并关闭弹出窗口的可点击对象。你有很多变体如何实现这个,但想法是一样的 - 一些 HTML 元素将被分配 onclick javascript 处理程序,它将读取点击值并更新原始列表。
<ul id="popupClickableList">
@foreach(var item in Model)// PopUpModel
{
<li>
<input id="id@(item.ID)" type="checkbox" value="@item.ID" />
<label for="id@(item.ID)">@item.DisplayValue</label>
</li>
}
<ul>
现在,在您的原始部分中,您需要弹出窗口的标记和打开它的链接或按钮,以及初始化和驱动弹出窗口的 javascript。在这个例子中我使用jQuery Dialog:
<!-- in your original partial -->
<div id="popupView"></div>
<a href="#" id="popUpShow">...</a>
<script type="text/javascript">
$(function () {
$('#popupView').dialog({
autoOpen: false,
resizable: false,
modal: true
});
$('#popUpShow').click(function() {
$('#popupView').load("@Url.Action("PopupPartialViewName")", function() {
// assign the click handler for popupView's clickable list
$('#popupClickableList li').click(function() {
// get a hold of the clicked value
// update element in original list (it's here on this view)
$('#popupView').dialog('close');
});
$(this).dialog('open');
});
return false;
});
});
</script>
如果我下次午休有更多时间,我会将其放入 Visual Studio 中以使其完全正常工作:-)