我的视图和自定义对象有一些模型作为属性,如下所示:
class SomeModel {
public object Data { get; set; }
}
在视图中:
@model Blablabla.SomeModel
例如,在 Model.Data 我放置了一些具有属性的对象Name
:DateBirth
和Amount
。我想为这些属性创建编辑器,如下所示:
@Html.EditorFor(m => m.Data.Name)
@Html.ValidateMessageFor(m => m.Data.Name)
但我不能这样做,因为m.Data
is object
,编译器不会通过它。如果使用 EditorFor - 我可以用我自己的替换它<input type="..." ... />
而不会出现问题。
但是我找不到如何将 MVC 的验证器(来自 MicrosoftMvcValidation.js)包含到我的输入中的方法,并且我不想为来自System.ComponentModel.DataAnnotations
.
有没有一种方法可以为我的自定义对象使用MVC 的验证器,而无需提供有关它具有哪些属性的信息(我通过反射枚举属性来生成编辑器)。
UPD:我不能写,@Html.ValidateMessageFor(m => m.Data.Name)
因为我以前不知道属性名称。我只能通过这样的反射来做到这一点:@Html.ValidateMessageFor(m => m.Data.GetType().GetProperty(colName).GetValue(m.Data, null))
,其中colName
包含属性名称(名称、出生日期或金额)。