我有以下设置
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有时(可能通过属性或注释)在我的模型上保留复杂属性。 / p>
如何做到这一点?
答案 0 :(得分:3)
您可以对需要保留的Model.Profile的每个属性使用@Html.HiddenFor(model => model.Profile.Id)
@Html.HiddenFor(model => model.Profile.Name)
等。您不应该触摸模型绑定器 - 它将使用标准模型绑定器自动绑定。
如果您使用其他html帮助程序,它会为某些属性生成输入标记 - 您不应对此属性使用@Html.HiddenFor()
。