Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 自定义对象的MVC验证程序_Asp.net Mvc_Asp.net Mvc Validation - Fatal编程技术网

Asp.net mvc 自定义对象的MVC验证程序

Asp.net mvc 自定义对象的MVC验证程序,asp.net-mvc,asp.net-mvc-validation,Asp.net Mvc,Asp.net Mvc Validation,我有一些视图模型和自定义对象作为属性,如下所示: class SomeModel { public object Data { get; set; } } @Html.EditorFor(m => m.Data.Name) @Html.ValidateMessageFor(m => m.Data.Name) 鉴于: @model Blablabla.SomeModel 例如,在Model.Data中,我放置了一些具有属性的对象:Name、DateBirth和Amount。

我有一些视图模型和自定义对象作为属性,如下所示:

class SomeModel {
  public object Data { get; set; }
}
@Html.EditorFor(m => m.Data.Name)
@Html.ValidateMessageFor(m => m.Data.Name)
鉴于:

@model Blablabla.SomeModel
例如,在Model.Data中,我放置了一些具有属性的对象:Name、DateBirth和Amount。 我想为这些属性创建编辑器,如下所示:

class SomeModel {
  public object Data { get; set; }
}
@Html.EditorFor(m => m.Data.Name)
@Html.ValidateMessageFor(m => m.Data.Name)
但我不能这样做,因为m.Data是对象,编译器不会传递它。在使用EditorFor的情况下,我可以用我自己的替换它,而不会出现问题

但是我找不到一种方法如何将MicrosoftMvcValidation.js中的MVC验证程序包含到我的输入中,并且我不想为System.ComponentModel.DataAnnotations中的所有属性创建我自己的Java脚本

有没有一种方法可以在没有关于自定义对象的属性信息的情况下使用MVC的验证器?我正在通过反射枚举属性来生成编辑器


UPD:我不能只写@Html.ValidateMessageForm=>m.Data.Name,因为我以前不知道属性名。我只能通过这样的反射来实现:@Html.ValidateMessageForm=>m.Data.GetType.GetPropertycolName.GetValuem.Data,null,其中colName包含属性名、DateBirth或Amount。

我总是犹豫是否建议使用dynamic关键字,但是对于您正在做的事情,这至少是一个选项

通过使您的数据属性类型为dynamic,您将能够在运行时对其设置属性,并在EditorFor中使用它


好的,这是我的错,我没有在上面提到它-我不能只写m.Data.Name,但可以通过反射在父循环中执行类似:@Model.Data.GetValuecolName的操作。更新了问题。