У меня проблема с проверкой в 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);
}