ASP.NET MVC3 Сравнение атрибут: ошибка при сравнении с вложенным свойством

StackOverflow https://stackoverflow.com/questions/7337898

Вопрос

Получение ошибки при использовании атрибута 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; }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top