【发布时间】:2010-09-26 23:41:59
【问题描述】:
我正在使用 ASP.NET MVC。我的要求是通过像向导一样的逐步过程来构建一个复杂的对象(由其他对象组成的对象)。
每个依赖对象都应建立在它的步骤上,并应在它的步骤中进行验证。例如
public class ComplexObjectModel {
public Object1 MyObject1 { get; set; }
public Object2 MyObject1 { get; set; }
public Object3 MyObject1 { get; set; }
}
由于没有内置的向导工具,我决定创建 3 个模型类和绑定到这些模型的 3 个强类型局部视图。
在我的伪向导的每一步中,我都会验证依赖模型对象并将复杂对象的属性设置为其引用。
我正在考虑通过以下方式将复杂对象保存在 ViewData/TempData 中
在控制器动作中
[HttpPost]
public ActionResult MyAction1() {
ComplexObjectModel com = (ComplexObjectModel)ViewData["ComplexObjectModel"];
com.MyObject1 = new Object1();
ViewData["ComplexObjectModel"] = com;
return PartialView( "MyAction2", com.Object1 );
}
在视图中
<% using (Html.BeginForm()) { %>
<%= Html.Hidden("ComplexObjectModel", ViewData["ComplexObjectModel"]) %>
... view fields for Object1, Object n ....
<% } %>
但是通过这种方式,对象不会在视图和控制器之间来回传递,当它从视图返回到下一个操作时,我体验到它是 null。
有没有办法支持这个要求?
感谢您的帮助
【问题讨论】: