【发布时间】:2012-06-21 18:40:53
【问题描述】:
我有以下设置
public class Profile
{
//Some Properties
//Some Methods
}
/*Model Class*/
public class LineItem
{
public Profile Profile {get;set;}
}
在我的控制器中。我有以下两个操作
public ActionResult GetRequest(){
LineItem model = new LineItem();
model.Profile = new Profile(){/*Initialize Properties*/};
return View(model);
}
public ActionResult PostRequest(LineItem item(){
item.Profile .... /*Profile Is Null*/
return View(...);
}
我已验证 LineItem 模型类上的 Profile 属性已在 GetRequest 上设置,并返回到视图,但我想知道在提交该模型时如何保留该复杂属性。我知道人们通常使用隐藏字段进行模型持久性,并且会话也可用,但似乎我有时应该能够告诉 ModelBinder(可能通过属性或注释)在我的模型上持久化复杂的属性。
如何做到这一点?
【问题讨论】:
-
您是否尝试过创建实现 IModelBinder 接口的自定义模型绑定器?
-
默认的
ModelBinder将设置任何与 POST 参数匹配的属性。因此,如果您没有特定属性的输入元素,它不会在 GET/POST 之间持续存在。 -
我正计划这样做,但我想确定一种方法来使这个过程相当透明。感谢您的帮助。
标签: asp.net-mvc asp.net-mvc-3 model-binding