Проверка аннотаций данных Asp.net Mvc2 (работает на стороне клиента, нет на стороне сервера ??) - PullRequest
1 голос
/ 13 августа 2010

Я использую модель сущности с аннотациями метаданных. Мой метод контроллера выглядит следующим образом ...

        if (!ModelState.IsValid)
        {
            return View(model);
        }
        else
        {
            UpdateModel(model);
            repo.Save();
            return RedirectToAction("Index");
        }

Если я включу проверку на стороне клиента в представлении, я получу ошибку по атрибутам из класса метаданных. Если я уберу проверку на стороне клиента, ошибка будет сохранена при сохранении в БД, а не при возвращении представления со сводкой ошибок.

Это верхняя часть моего взгляда ....

<% using (Html.BeginForm())
   {%>
<%: Html.ValidationSummary(true) %>

Я пытался работать без отладки (ctrl + f5) в режиме отладки и выпуска, а также с настройкой точек останова и отладки (f5), но кажется странным получать проверку на стороне клиента без проверки на стороне сервера. Что мне здесь не хватает?

1 Ответ

1 голос
/ 13 августа 2010

UpdateModel заполняет модель из коллекции форм, параметров маршрутизации и т. Д. И выполняет проверку на стороне сервера.Вам необходимо проверить ModelState.IsValid после обновления.Обычный шаблон: ...

if (!TryUpdateModel(model))
{
  // Validation Failed...
  return View(model);
}

// Validation Passed...

Обратите внимание, что TryUpdateModel ловит исключения и возвращает false, если они были вызваны.Если нет, то он просто возвращает ModelState.IsValid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...