我目前正在制定关于MVC3和应用程序:
- 我在其中用户正在完成每个寄存器形式的形式。
- 再次当他点击一个按键记录被传递给控制器和存储在列表中,然后传递给视图来显示的结果是什么momment在“缓冲”预览
- 未用于避免其dissapear编辑和只显示(以前寄存器)的数据在多个步骤使用hiddenfor preserverd
- 最后,用户可以保存所有的元素列表数据库中的点击另一个按钮时
我的问题是:有办法保持在列表中的数据,而不必做hiddenfor在每一步每一个元素?
我目前正在制定关于MVC3和应用程序:
我的问题是:有办法保持在列表中的数据,而不必做hiddenfor在每一步每一个元素?
为您的列表中的会话变量。
Session["MyList"] = myList;
后来你“恢复”你的名单如下:
var myList = Session["MyList"] as List<MyType>;
如果你添加一些代码的我可以调整这个满足您的实际情况。
我认为你可以使用向导技术来做到这一点。所以首先你需要找到一个精灵插件。 例如jQuery的步骤 。 其中每一个步骤,你将有你需要的形状和你有两个选择: 与会议的工作是这样的:
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);
}
在每一步改变,你可以验证表单并提交给法控制器在那里你会拯救这个不是数据库,而是session.And在最后一步,你可以做一个总结所有你形成。 这是很好的解决方案,这将是很容易实现,并将努力nice.But使用此解决方案,你需要想想你多久需要session来保存你的数据,因为会议将有时间限制。
第二件事情,你可以做:使用向导插件,在最后一步,你可以得到你所有的形式和各形态,你可以这样做:
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;
});
}
第二种解决方案是好的,但也不是那么容易实现希望这将锄头你,你会做出正确decision.If你会发现花药的解决方案请向我们提供它。