У меня проблема с проверкой в ASP.NET MVC 2.0. Я использую одно и то же действие в контроллере для выполнения запроса пользователя.
Например:
public ActionResult Index(ReportModel model)
{
if (!model.IsInitialDisplay && ModelState.IsValid)
{
model.Result = service.GetResult(model);
}
return View(model);
}
В ReportModel я определяю флаг IsInitialDisplay, чтобы определить, была ли страница начальной или нет:
public class ReportModel
{
[Required(ErrorMessage = "*")]
public string Criteria { get; set; }
public bool IsInitialDisplay { get; set; }
public ReportResult Result { get; set; }
public ReportModel()
{
IsInitialDisplay = true;
}
}
И в представлении я использую следующий код:
<% using (Html.BeginForm())
{ %>
<table>
<tr>
<th>
Criteria:
</th>
<td>
<%= Html.TextBox("Criteria", "") %>
<%= Html.ValidationMessage("Criteria") %>
</td>
</tr>
</table>
<br />
<input type="submit" value="Submit" />
<%= Html.Hidden("IsInitialDisplay", false) %>
<% } %>
Как я ожидаю, если пользователи не будут вводить какое-либо значение для критериев и нажать кнопку "Отправить", появится сообщение об ошибке для проверки.
Но сообщение об ошибке проверки всегда отображается на начальной загрузке страницы, я не знаю, как его предотвратить?
Кто-нибудь знает? Спасибо,
[Обновлено]
Я обновил свой метод действий, как показано ниже, и это выглядит нормально:
public ActionResult Index(ReportModel model)
{
// Collecting some commons data here...
if (model.IsInitialDisplay)
{
ModelState.Clear();
}
else if (ModelState.IsValid)
{
model.Result = service.GetResult(model);
}
return View(model);
}