Новые вспомогательные методы EditorFor, TextBoxFor очень полезны для избежания жестко закодированных имен полей в представлениях.
Я пишу функции проверки, где службы проверяют данные сложной модели.
Если с полем произошла ошибка, служба должна отправить ошибку для этого поля в словарь состояния модели.
Существует ли вспомогательный метод, который генерирует полное имя модели?
EDIT:
Samplemodel:
class CustomModel {
public InnerModel Inner { get; set; }
}
class InnerModel {
public String Field1 { get; set; }
public SomethingMoreToValidate[] More { get; set; }
}
class SomethingMoreToValidate {
public int A { get; set; }
public int B { get; set; }
}
Поле ввода для InnerModel.SomethingMoreToValidate [0] .A в представлении имеет имя «InnerModel.SomethingMoreToValidate [0] .A». Чтобы связать ошибки состояния модели с полем, я должен поместить ошибки с этим именем в ModelStateDictionary.
В представлении, отображающем данные InnerModel, я могу написать:
Html.EditorFor(m => m.SomethingMoreToValidate[0].A);
Если свойство переименовано, компилятор предупреждает меня.
В проверяющем контроллере или классе обслуживания я должен написать:
ModelState.AddModelError(
"InnerModel.SomethingMoreToValidate[0].A",
"There is a problem with this field");
Если свойство переименовано, обратной связи не будет, если у меня нет других проверок, таких как юнит-тесты.
Я хотел бы написать:
ModelState.AddModelErrorFor(
m => m.InnerModel.SomethingMoreToValidate[0].A,
"There is a problem with this field")