客戶端驗證不Ajax.BeginFormAjax.BeginForm和驗證
工作對我來說這是我的代碼:
<div id="report">
<div id="projectReport">
<div >
@{
Html.EnableClientValidation();
}
@using (Ajax.BeginForm("AnalyticsDates", new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "reportContent"
}))
{
@Html.LabelFor(m => m.StartDate)
@Html.TextBoxFor(m => m.StartDate, new { id = "start" })
@Html.ValidationMessageFor(model => model.StartDate)
@Html.LabelFor(m => m.EndDate)
@Html.TextBoxFor(m => m.EndDate, new { id = "end" })
@Html.ValidationMessageFor(model => model.EndDate)
<input id="btnsearch" type="submit" [email protected] class="iconHeader"/>
}
</div>
</div>
<div id="reportContent">
</div>
</div>
而且我能在web.config頁面驗證:
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
,並添加js文件以及
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
關於第一個第二個問題, 我的行動是
[HttpPost]
[Authorize(Roles = "XXXReport")]
public async Task<ActionResult> AnalyticsDates(ReportRequestVM reportRequestVM)
{
if (!ModelState.IsValid)
{
return View("**MainReports**", reportRequestVM);
}
// fill reportRequestVM with data
return View("**PartialReport**", reportRequestVM);
}
如果模型是有效的我返回一個局部視圖和頁面看起來很好,否則我返回主視圖,表單,但在這該頁面將自我呈現兩次。問題是,如果客戶端驗證失敗,如何返回帶有驗證錯誤的主窗體?
任何幫助,將不勝感激, 10X羅尼
感謝給我的命中解決呢:) – ron