Asp.net mvc 4 partialview和ajax表单中的razor验证不起作用
我有以下观点Asp.net mvc 4 partialview和ajax表单中的razor验证不起作用,asp.net-mvc-4,razor,asp.net-ajax,Asp.net Mvc 4,Razor,Asp.net Ajax,我有以下观点 @model Token.Creator.Site.Models.Customer @{ var cusModel = new Token.Creator.Site.Models.CustomerModel(); ViewContext.FormContext = new FormContext(); HtmlHelper.ClientValidationEnabled = true; HtmlHelper.UnobtrusiveJavaScript
@model Token.Creator.Site.Models.Customer
@{
var cusModel = new Token.Creator.Site.Models.CustomerModel();
ViewContext.FormContext = new FormContext();
HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
}
<div class="modal fade" id="customereditmodal" tabindex="-1" role="dialog" aria-hidden="true">
@using (Ajax.BeginForm("EditCustomer", "Customer", new AjaxOptions(), new {
@class = "modal-dialog form-horizontal",
id = "upload_s0pin"
})) {
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
@if (string.IsNullOrEmpty(Model.Companyname)) {
<h4 class="modal-title">@Model.Gender.Type @Model.Title @Model.Firstname @Model.Lastname</h4>
} else {
<h4 class="modal-title">@Model.Companyname</h4>
}
</div>
<div class="modal-body">
@Html.ValidationSummary()
<div class="form-group">
@Html.LabelFor(cus => cus.Companyname, "Firmenname", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Companyname, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Companyname);
</div>
<h4>Ansprechpartner</h4>
<div class="form-group">
@Html.LabelFor(cus => cus.Gender, "Anrede*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.DropDownListFor(cus => cus.Gender, new SelectList(cusModel.Gender.ToList(), cusModel.Gender), new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Title, "Titel", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Title, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Title);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Firstname, "Vorname*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Firstname, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Firstname);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Lastname, "Nachname*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Lastname, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Lastname);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Emailaddress, "Emailadresse*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Emailaddress, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Emailaddress);
</div>
<h4>Adresse</h4>
<div class="form-group">
@Html.LabelFor(cus => cus.Street, "Straße und Hausnummer*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Street, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Street);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.ZIPCode, "Postleitzahl*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.ZIPCode, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.ZIPCode);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Town, "Stadt*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Town, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Town);
</div>
<div class="form-group">
@Html.LabelFor(cus => cus.Country, "Land*", new { @class = "col-lg-3 control-label" })
<div class="col-lg-9">
@Html.TextBoxFor(cus => cus.Country, new { @class = "form-control" })
</div>
@Html.ValidationMessageFor(cus => cus.Country);
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Schließen</button>
<input type="submit" class="btn btn-primary" value="Speichern" />
</div>
</div>
</div>
}
</div>
但是验证不起作用。我做错了什么
编辑:局部视图是由AJAX加载的如果您只想验证,请确保您的
EditCustomer
操作方法具有以下结构:
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
// It's ok! do what you need
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
return View(model);
}
如果您希望进行不引人注目的验证—如果出现问题,表单将不会发布—您需要在web.config中启用它:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
请注意,包含上述脚本的顺序很重要,如果以不同的顺序添加,则不进行引人注目的验证…如果只需要验证,请确保您的
EditCustomer
操作方法具有以下结构:
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid)
{
// It's ok! do what you need
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
return View(model);
}
如果您希望进行不引人注目的验证—如果出现问题,表单将不会发布—您需要在web.config中启用它:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
请注意,包含上述脚本的顺序很重要,如果以不同的顺序添加,则不进行引人注目的验证…我终于找到了解决方案,我只需要在局部视图中添加以下脚本:
<script type="text/javascript">
$(document).ready(function () {
$.validator.unobtrusive.parse("#customereditmodal > form");
});
</script>
$(文档).ready(函数(){
$.validator.unobtrusive.parse(#customereditmodal>form);
});
其中customereditmodal
是div的id
这里是解决方案的链接我终于找到了一个解决方案,我只需要在部分视图中添加以下脚本:
<script type="text/javascript">
$(document).ready(function () {
$.validator.unobtrusive.parse("#customereditmodal > form");
});
</script>
$(文档).ready(函数(){
$.validator.unobtrusive.parse(#customereditmodal>form);
});
其中customereditmodal
是div的id
这是解决方案的链接好的,我有所有用于非结构化验证的内容,但它不起作用,我遗漏了什么?好的,我有所有用于非结构化验证的内容,但它不起作用,我遗漏了什么?