ASP.NET MVC3 Сравнение атрибут: ошибка при сравнении с вложенным свойством
-
27-10-2019 - |
Вопрос
Получение ошибки при использовании атрибута MVC3 с вложенным свойством.
Пример кода заключается в следующем:
Модель и модель просмотра:
public class Data
{
public string Input { get; set; }
}
public class DataVM
{
public Data Data { get; set; }
[Compare("Data.Input")]
public string ConfirmInput { get; set; }
}
Контроллер:
public ActionResult Data() {
return View(new DataVM());
}
[HttpPost]
public ActionResult Data(FormCollection fc) {
DataVM vm = new DataVM();
TryUpdateModel(vm, fc);
if (ModelState.IsValid){
return Content("Success!!!");
}
return View(vm);
}
Вид:
@model myth.Models.ViewModels.DataVM
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
@Html.EditorFor(m => m.Data.Input)
@Html.ValidationMessageFor(m => m.Data.Input)
<br />
@Html.EditorFor(m => m.ConfirmInput)
@Html.ValidationMessageFor(m => m.ConfirmInput)
<br />
<input type="submit" value="Save" />
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
Если я использую [compare ("input")], проверка на стороне клиента не удается. Если я использую [compare ("data.input")], валидация на стороне клиента работает, но сторона сервера не сбои. В классе сравниваться. CS, метод
protected override ValidationResult IsValid(...) { .. },
не может найти свойство Data.Input.
Как правильно использовать сравнение для сравнения вложенного свойства?
Нет правильного решения
Другие советы
Измените свою модель представления и отобразите на свою сущность позже:
public class DataVM
{
public string Input { get; set; }
[Compare("Input")]
public string ConfirmInput { get; set; }
}
Не связан с StackOverflow