模型上的MVC模型绑定持久复杂属性

时间:2012-06-06 17:07:16

标签: asp.net-mvc asp.net-mvc-3 model-binding

我有以下设置

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>

如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以对需要保留的Model.Profile的每个属性使用@Html.HiddenFor(model => model.Profile.Id) @Html.HiddenFor(model => model.Profile.Name)等。您不应该触摸模型绑定器 - 它将使用标准模型绑定器自动绑定。 如果您使用其他html帮助程序,它会为某些属性生成输入标记 - 您不应对此属性使用@Html.HiddenFor()