我在ASP.NET MVC 2.0中驗證有問題。我在Controller中使用相同的Action來執行用戶請求。
例如:頁面加載時顯示驗證消息
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);
}
在我的項目中,我爲_ReportModel.Criteria_使用了複雜的模型對象。所以,你的建議是不合適的。 – aquanilium 2011-03-21 01:23:20