MVC3 - Проверка входных данных - Разница между create () и edit () - PullRequest
1 голос
/ 24 декабря 2011

Я снова борюсь за проверку входных данных. Допустим, я редактирую клиента, и поле "имя" требуется через

[Required(ErrorMessage = Constants.ErrorMsgNameMissing)]
public string NAME { get; set; }

внутри модели.

Метод редактирования делает

[HttpPost]
edit(ViewModel vm)
{
    // some code here    
    try
    {
        UpdateModel(vm);
        // some code there
    }
    catch (Exception e)
    {
        return View(vm);
    }
}

При выполнении UpdateModel(vm) выдается исключение, если имя пустое. Затем мой взгляд показывает Html.ValidationSummary (). Пока все хорошо.

Теперь, если я создам клиента через

[HttpPost]
create(ViewModel vm)
{
    if (ModelState.IsValid) { ... }
}

У меня нет метода UpdateModel(), так как обновлять нечего. И ModelState.IsValid, кажется, возвращает true каждый раз. Даже если ViewModel является нулевым. Так что у меня тогда проблемы.

Как мне это проверить? И что мне вернуть в случае ошибок?

Обновление: Я думаю, что было слишком поздно вчера. На самом деле, это работает. Но я надеялся на исключение и забыл else { ... } ...

1 Ответ

1 голос
/ 24 декабря 2011

Попробуйте это:

[HttpPost, ValidateInput(true)]
create(ViewModel vm)
{
    if (ModelState.IsValid) { ... }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...