我的操作采用了一个由默认模型绑定器绑定的类属性:
public ActionResult MyControllerAction(MyModelClass model) { ...
该类使用几种非标准值类型,例如MongoDB的ObjectId
值类型,它当然是不可为空的。
如果我为ObjectId类型创建一个自定义模型绑定器(很容易做到)并将其添加到Application_Start
中,如下所示:
ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder());
...默认模型绑定器会忽略它,它似乎只适用于作为参数直接传递给操作的模型值。
除此之外,我似乎无法获得[Required]
属性来识别未提供的默认(未指定)值。
所以在坚果壳中:
[Required]
将该属性的default
值识别为未指定?或者 - 是否已经有一些已经可以处理所有这些的东西,我可以在我的项目中下载和使用它?
答案 0 :(得分:0)
好的,已经弄清楚了:
DefaultModelBinder
使用任何指定的自定义模型绑定器,但仅当在提交的值中实际指定了值时[Required]
属性基本上是“not null”的简写,因此如果将属性指定为可空,则可以正常工作,即在我的情况下,如果没有值,ObjectId?
会使属性跳闸指定。以下是我发现的一篇很好的博客文章,其中解释了一些内容:http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html