【发布时间】:2014-05-06 19:46:33
【问题描述】:
在我的应用程序中,我使用简单的 View 验证,客户端和服务器端验证工作正常,但现在我已更改为引导模式和 PartialView。
问题是客户端验证不再起作用,对于服务器端验证,当我单击提交时,他将我重定向到新页面(见图),而不是在当前模式弹出窗口中显示错误。
Create Controller:
[HttpGet]
public ActionResult Create()
{
ViewBag.CAT_ID = new SelectList(db.CATEGORIE, "CAT_ID", "LIBELLE");
ViewBag.C_GARANT = new SelectList(db.GARANTIE, "C_GARANT", "LIB_ABREGE");
return PartialView("_Create");
}
//
// POST: /Taux/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(TAUX taux)
{
if (ModelState.IsValid)
{
db.TAUX.Add(taux);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CAT_ID = new SelectList(db.CATEGORIE, "CAT_ID", "LIBELLE", taux.CAT_ID);
ViewBag.C_GARANT = new SelectList(db.GARANTIE, "C_GARANT", "LIB_ABREGE", taux.C_GARANT);
return PartialView("_Create", taux);
}
_Create部分视图:
@model pfebs0.Models.TAUX
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="CreateTaux">Add</h3>
</div>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="modal-body">
<div class="form-group">
<div class="form-group">
<label for="Categorie">Categorie : </label>
@Html.DropDownList("CAT_ID", String.Empty)
@Html.ValidationMessageFor(model => model.CAT_ID)
</div>
//Other Form input.
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-default">Submit</button>
</div>
}
</div>
<script>
$("select").addClass("form-control");
$("input").addClass("form-control");
$("label").addClass("control-label");
</script>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval") }
Index View 我把模态放在哪里:
<p>
@Html.ActionLink("Ajouter", "Create", "Taux",
new { id = "btnAdd", @class="btn btn-default"})
</p
<div id="modalDiv" class="modal fade" >
<div class="modal-dialog">
</div>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(function () {
$.ajaxSetup({ cache: false });
$('#btnAdd').click(function () {
$('.modal-dialog').load(this.href, function () {
$('#modalDiv').modal({
backdrop: 'static',
keyboard: true
}, 'show');
});
return false;
});
});
</script> }
那么我必须添加或更改以在我的模态中进行客户端验证并将服务器验证重定向到模态,而不是像图片中的新页面?
【问题讨论】:
-
我认为您需要为动态加载的新 HTML 元素重新解析验证器:stackoverflow.com/questions/6691958/… 此外,您可能需要将
Html.BeginForm设置为类似Html.BeginForm(action, controller, method, null)以避免奇怪查询字符串。 -
@ALMMa 感谢验证我解决了这个问题,但是如何解决重定向问题?
-
@Chlebta 你有没有解决这个问题,它不会将你重定向到新页面并实际显示服务器端验证?我有同样的问题。
-
@Chlebta 您是否解决了客户端验证问题并重定向到没有模式的新页面(仅查看页面)并实际显示模式中的服务器端验证错误?我在 2017 年 7 月(3 年后)遇到了同样的问题。
标签: javascript jquery asp.net-mvc validation twitter-bootstrap