ASP.Net MVC 3 ModelState.IsValid - PullRequest
       1

ASP.Net MVC 3 ModelState.IsValid

5 голосов
/ 15 ноября 2011

Я только начинаю работать с ASP.Net MVC 3 и смущен этим вопросом.

В некоторых примерах, когда в контроллере выполняется действие, которое содержит входные данные, выполняется проверка, чтобы убедиться, что ModelState.IsValid имеет значение true В некоторых примерах эта проверка не показана. Когда я должен сделать эту проверку? Должен ли он использоваться всякий раз, когда вводится метод действия?

Ответы [ 2 ]

8 голосов
/ 15 ноября 2011

Должен ли он использоваться всякий раз, когда вводится метод действия?

Это именно то, когда вы используете модель представления, предоставляемую в качестве аргумента действия, и с этой моделью представления связана некоторая проверка (например, аннотации данных). Вот обычный шаблон:

public class MyViewModel
{
    [Required]
    public string Name { get; set; }
}

и затем:

[HttpPost]
public ActionResult Foo(MyViewModel model)
{
    if (!ModelState.IsValid)
    {
        // the model is not valid => we redisplay the view and show the
        // corresponding error messages so that the user can fix them:
        return View(model);
    }

    // At this stage we know that the model passed validation 
    // => we may process it and redirect
    // TODO: map the view model back to a domain model and pass this domain model
    // to the service layer for processing

    return RedirectToAction("Success");
}
2 голосов
/ 15 ноября 2011

Да.В основном он используется для действий, помеченных атрибутом [HttpPost].

imho модели представления должны всегда проверяться (и, следовательно, всегда иметь некоторую проверку, обычно атрибуты DataAnnotation).

public class MyViewModel
{
    [Required] // <-- this attribute is used by ModelState.IsValid
    public string UserName{get;set;}
}

Если вы заинтересованы в обработке ошибок в MVC, я написал об этом в блоге пару дней назад.

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