我正在开发MVC应用程序。我有一个主页面,点击超链接打开一个弹出窗口。
主页:
查看
<a href="#" id="CreateAddlField">Add Fields</a>
用于打开弹出窗口的Javascript代码:
$(function () {
$('#CreateAddlField').click(function () {
debugger;
var Param2 = $("#Param2").val();
var Param3 = "CreateFields";
debugger;
var div2 = $("#DivAddlFields");
div2.load("/ControllerName/ActionName", { Param1: 0, Param2: Param2, Param3: Param3 }),
div2.dialog({
modal: true,
width: 600,
height: 600,
title: "Add Fields",
resizable: false,
close: function (event, ui) {
location.reload();
}
});
});
});
这会加载弹出窗口。 Popup的视图有一些字段用于输入绑定到模态的值:
主要模式:
public class MainModal
{
public List<ListModal> lstModal { get; set; }
}
public class ListModal
{
public string Param1 { get; set; }
public string Param2 { get; set; }
public string Param3 { get; set; }
public string Param4 { get; set; }
public int Param5 { get; set; }
public int Param6 { get; set; }
public string Param7 { get; set; }
}
单击弹出活动中的“添加”按钮,它将返回主页面并将所有模态值发布到控制器。每次它都会更新列表并附加它。如何使List附加其值?
每次点击添加按钮时,都会调用以下javascript并返回主页面,我要在其中附加列表模型:
function AddAddlFields()
{
var formContainer = $("#FormID");
var vmListModal = formContainer.serialize();
window.open("/ControllerName/ActionName?vmListModal=" + formContainer);
}
在控制器中:
public PartialViewResult ActionName(ListModal vmListModal)
{
MainModal vmMaimModal = new MainModal();
vmMaimModal.lstModal.Add(vmListModal); //This is updating the list not appending it
return PartialView("MainPage", vmMaimModal);
}
如何将值附加到列表模式,以便我可以获取弹出活动中输入的所有值并以主页以表格形式显示?
答案 0 :(得分:0)
每次操作方法在控制器中加载时,模型的先前值都会丢失,因为控制器类重新初始化并且所有类再次使用新实例创建,因此您需要将它们保存在会话中或使用单例模式。 如果类对象不为null,则此模式会阻止创建类对象的新实例。
问题在于
MainModal vmMaimModal = new MainModal();
这个新关键字创建了对象的新实例。
示例:
单身方法
像这样创建模型的Singleton类
public sealed class Singleton
{
private static MainModal MainInstance = null;
private static readonly object padlock = new object();
Singleton()
{
}
public static MainModal MainInstance
{
get
{
lock (padlock)
{
if (MainInstance == null)
{
MainInstance = new MainModal();
}
return MainInstance;
}
}
}
}
在控制器中调用此类,如
MainModal userinfo = Singleton.MainInstance;
使用会话