вопрос по аннотациям данных MVC, шаблонам редактора и валидации - PullRequest
0 голосов
/ 02 ноября 2010

Контекст: приложение MVC 2, использующее EF.

Почему некоторые из них работают, а некоторые нет?Отображаемое имя имеет значение «Имя суда», но проверка не выполняется, т.е. я не вижу сообщения об ошибке.Я думаю, что шаблоны редактора мешают проверке, иначе Model.IsValid не работает со моделью сложного представления.

Есть мысли?

ЧАСТИЧНЫЙ КЛАСС:

[MetadataType(typeof(CourtMetaData))]
public partial class Court
{

    private class CourtMetaData
    {

        [Required(ErrorMessage = "Court Name is required")]
        [DisplayName("Court Name")]
        public System.String CourtName
        {
            get;
            set;
        }

    }

}

КОНТРОЛЛЕР:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult New(CourtsNewViewModel court)
{
    if (ModelState.IsValid)
    {
        db.AddCourt(court);
        return View("List");
    }
    else
    {
        return View("New", court);
    }
}

МОДЕЛЬ ПРОСМОТРА:

public class CourtsNewViewModel : ViewModelBase
{

    public Court Court {get; private set; }

    public IEnumerable<CourtType> CourtTypes { get; private set; }

    public CourtsNewViewModel()
    {
        CourtTypes = db.GetAllCourtTypes();
    }

}

ПРОСМОТР:

Html.EditorFor(model => model.Court.CourtName, "LongString")

ШАБЛОН РЕДАКТОРА:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %>
<div class="editor-row">
<div class="editor-label">
    <%= Html.LabelFor(model => model) %>
</div>
<div class="editor-field">
    <%= Html.TextBoxFor(model => model)%>
    <%= Html.ValidationMessageFor(model => model) %>
</div>
</div>

1 Ответ

1 голос
/ 02 ноября 2010

Вот что получилось:

public ActionResult New(CourtsNewViewModel court)

Переменная court уже используется, поскольку у вас есть свойство Court в вашей модели.

Теперь переименуйте параметр:

public ActionResult New(CourtsNewViewModel courtModel)

Все должно работать как положено.

...