在我的应用程序中,我使用简单的查看验证,客户端和服务器端验证,工作正常,但现在我已经改变为引导模态和PartialView。
问题是,客户端验证dos不再工作,并且对于服务器端验证,当我单击提交时,他将我重定向到新页面(请参阅图片),而不是在当前模式弹出窗口中显示错误。 ASP.net MVC 4验证在引导模式和部分视图
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
,我puted模态:
<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> }
所以我必须添加或陈ge在我的模式中进行客户端验证,并将服务器验证重定向到模式,而不是像图片一样的新页面?
我认为你需要重新解析验证器为你的新的HTML元素dinamically加载:http://stackoverflow.com/questions/6691958/unobtrusive-jquery-validation-on-elements-created-by-javascript- mvc3另外,您可能需要将'Html.BeginForm'设置为'Html.BeginForm(action,controller,method,null)',以避免奇怪的查询字符串。 –
@ALMMa感谢您的验证我解决了这个问题,但钢铁重定向问题如何解决它? – Chlebta
@Chlebta你有没有得到这个解决方案,它不会将您重定向到新页面,并实际显示服务器端验证?我有同样的问题。 –