模型内部属性的自定义模型绑定器

时间:2009-12-22 14:54:37

标签: asp.net-mvc

我的模特就像这样

public class MyModel
{
   string ID {get;set;}
   string Title {get;set;}
   MyOtherModel Meta {get;set;}
}

如何为类型(MyOtherModel)定义自定义模型绑定器,因此当默认绑定器绑定MyModel时,它会调用“Meta”属性的自定义模型绑定器。 我在App start中注册了它:

 ModelBinders.Binders[typeof(MyOtherModel)] = new MyCustomBinder();

但这不起作用。有关模型粘合剂的更多信息的任何想法或任何好文章?

2 个答案:

答案 0 :(得分:1)

有一篇关于集合的文章涉及复杂类型映射的东西:

Collections and a bit about complex types

另一方面,本文可以为您提供一些有用的提示:

http://odetocode.com/Blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx

我建议您使用MyModel类的模型绑定器解决方法,它不是一个完美的解决方案,但是一旦找到更好的解决方案,您就可以轻松地重构。 :)

答案 1 :(得分:0)

实际上,如果您将使用MyModel类的模型输入一些编辑/创建视图,如下所示:

<%= Html.TextBox("Meta.Prop1") %>

其中Prop1是MyOtherModel类的属性, 然后

UpdateModel(model);

会将文本框值填充到自定义子模型属性中。然后,文本框值也将填充该子模型值。

因此,一旦更新了当前的模型,您也在更新子模型。