我目前正在开发一个关于MVC3的应用程序,并且:
我的问题是:有没有办法保存列表中的数据而不必为每一步中的每个元素隐藏?
答案 0 :(得分:0)
为列表创建会话变量。
Session["MyList"] = myList;
稍后你会像这样“恢复”你的列表:
var myList = Session["MyList"] as List<MyType>;
如果您添加了一些代码,我可以根据您的具体情况进行调整。
答案 1 :(得分:0)
我认为您可以使用向导技术来执行此操作。首先,您需要找到一个向导插件。 例如jQuery steps。 每个步骤都有一个你需要的表格,你有两个选择: 使用Session这样:
public YourObject GetObjectfromSession()
{
var obj = new YourObject();
if (HttpContext.Session["SessionName"] != null)
{
obj= (VmSysMealCreate)HttpContext.Session["SessionName"];
}
return obj;
}
public void InsertObjectTOSession(YourObject obj)
{
HttpContext.Session.Add("SessionName", obj);
}
在每个步骤更改时,您可以验证表单并将其提交到控制器中的方法,您将其保存到数据库而不是会话。在最后一步,您可以为所有表单进行汇总。 这是一个很好的解决方案,这将很容易实现,并且工作得很好。但是使用这个解决方案,您需要考虑会话需要多长时间来保存数据,因为会话将受到限制。
您可以做的第二件事: 使用向导插件,在最后一步,您可以获得所有表单,对于每个表单,您可以执行以下操作:
function functionNAme(formId) {
var form = jQuery("#" + formId);
if (form.valid()) { //If form is valid
form.submit();
return isValid;
}
var isValid = false;
form.submit(function (e) {
var that = this;
jQuery.ajax({
url: this.action,
type: this.method,
data: jQuery(this).serialize(),
async: false,
/* cache: false,*/
success: function (result) {
//on post method return result (summary view ofr each form )
//and you can append it to your last step
}
return false;
}
});
// unbind form submit event
form.unbind(e);
// preventing default
e.preventDefault();
// cancel the default submission of the form
return false;
});
}
第二种解决方案很好,但实施起来并不那么简单 希望这会锄你,你会做出正确的决定。如果你找到其他解决方案,请提供给我们。