【发布时间】:2011-12-17 03:17:30
【问题描述】:
我的操作采用一个由默认模型绑定器绑定的类属性:
public ActionResult MyControllerAction(MyModelClass model) { ...
该类使用了几种非标准的值类型,比如MongoDB的ObjectId值类型,当然是不可为空的。
如果我为 ObjectId 类型创建一个自定义模型绑定器(很容易做到)并将其添加到Application_Start 中,如下所示:
ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder());
...它被默认模型绑定器忽略,这似乎仅适用于作为参数直接传递给操作的模型值。
除此之外,我似乎无法让 [Required] 属性将默认(未指定)值识别为未提供。
简而言之:
- 如何让默认模型绑定器使用注册的自定义模型绑定器来解析模型的属性?
- 如何让
[Required]将该属性的default值识别为未指定?
或者——是否已经有一些东西已经处理了所有这些我可以下载并在我的项目中使用的东西?
【问题讨论】:
-
在视图模型中不使用这些花哨的类型不是更简单吗? IMO,视图模型应该非常简单,任何与更复杂类型的转换都应该在控制器中进行。
-
是的,这就是我所做的,除了每个采用 ID 值的单个操作都需要相同的 sn-p 代码来解析和验证 ID 值。我认为把它放在模型活页夹中会更容易。不过我刚刚想通了,所以我会发布并回答我自己的问题。
标签: asp.net-mvc data-annotations model-binding