我有一个结构,实现IValidatableObject,我用于视图模型上的属性。验证可以使用不可为空的属性,但如果添加可为空类型的属性>则不会为该属性调用IValidatableObject.Validate方法,即使它具有值。IValidatableObject和Nullable值类型
有没有什么办法可以触发我的可空属性验证呢,还是IValidatableObject不打算与值类型一起使用?
感谢
其他信息:
我希望能够在我的表单中输入数据时指定单位,例如10米,100公里,1厘米等。我还想验证输入的数据是否在范围内并且格式正确。我的结构将具有潜在不同单位(100cm/100m/1km)的字符串转换为总是具有相同单位(1/100/1000)的小数属性,反之亦然。
我使用了IValidatableObject进行验证,因为验证对于MyStruct的任何实例都是一样的 - 我不想在每次使用时都添加一个属性。
我的模型会是这个样子:
public class MyModel
{
public MyStruct Ab {get; set;}
public MyStruct? Cd {get; set;}
}
我的看法是使用模型,这使得我的结构为使用模板显示一个文本框,一个强类型的视图。当表单发布时,我有一个自定义模型联编程序将输入的字符串转换回我的结构。
我控制器操作是这样的:
public ActionResult MyAction(MyModel model)
{
//do stuff
}
的模式势必确定并可空类型<MyStruct
的MYSTRUCT性能>。
您能向我们展示迄今为止您的模型,控制器和视图的代码吗? – 2011-04-12 12:14:53
我更新了更多信息的问题 – Dan 2011-04-12 14:47:06