MVC валидатор для пользовательского объекта
У меня есть некоторая модель для моего View и пользовательский объект как свойство, например:
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
является object
и компилятор не пропустит это. В случае с EditorFor - я могу заменить его своим <input type="..." ... />
без проблем.
Но я не могу найти способ включить валидатор MVC (из MicrosoftMvcValidation.js) в мой ввод, и я не хочу создавать свои собственные javascript для всех атрибутов из System.ComponentModel.DataAnnotations
,
Есть ли способ использовать Validator MVC для моего пользовательского объекта без информации о том, какие свойства он имеет (я создаю редакторы, перечисляя свойства через Reflection).
UPD: я не могу просто написать @Html.ValidateMessageFor(m => m.Data.Name)
потому что я не знаю об имени свойства раньше. Я могу сделать это только через Отражение так: @Html.ValidateMessageFor(m => m.Data.GetType().GetProperty(colName).GetValue(m.Data, null))
, где colName
содержит имя свойства (имя, дата рождения или сумма).
1 ответ
Я всегда не решаюсь предложить использование dynamic
Однако ключевое слово для того, что вы делаете, это как минимум один вариант.
Делая ваши Data
свойство типа dynamic
вы сможете установить свойства для него во время выполнения, а также использовать его в своем EditorFor
,
public dynamic Data { get; set; }