Как проверить наличие ошибок проверки модели в asp.net mvc? - PullRequest
7 голосов
/ 15 июня 2010

Как проверить изнутри Представления, есть ли какие-либо ошибки ModelState для определенного ключа (ключ - это ключ поля Модели)

1 Ответ

11 голосов
/ 15 июня 2010

Если вы еще этого не сделали, ознакомьтесь с этой вики-статьей о шаблоне MVC .

Имейте в виду, что ваш просмотр только должен отвечать за отображение данных.Таким образом, вы должны попытаться свести к минимуму количество логики в вашем представлении.Если возможно, тогда обработайте ошибки ModelState (поскольку ошибки ModelState являются результатом неудачной попытки привязки модели) в вашем контроллере:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        if (!ModelState.IsValid)
        {
            return RedirectToAction("wherever");
        }

        return View();
    }
}

Если вам нужно обработать ошибки ModelState в своем представлении, вы можете сделать этокак это:

<% if (ViewData.ModelState.IsValidField("key")) { %>
    model state is valid
<% } %>

Но имейте в виду, что вы можете выполнить то же самое с вашим контроллером и таким образом удалить ненужную логику из своего поля зрения.Для этого вы можете поместить логику ModelState в свой контроллер:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        if (!ModelState.IsValidField("key"))
        {
            TempData["ErrorMessage"] = "not valid";
        }
        else
        {
            TempData["ErrorMessage"] = "valid";
        }

        return View();
    }
}

И затем, по вашему мнению, вы можете сослаться на сообщение TempData, которое освобождает представление от любого ненужного создания логики:

    <%= TempData["ErrorMessage"] %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...