Client-Formular-Validierung funktioniert nicht mit Modaler dialog in MVC
Ich bin verändert, ein Formular erstellen, um sich ein modal-dialog und jquery Unobtrusive validation aufhört zu arbeiten und weiß nicht, wie es zu lösen ist.
Index.cshtml hat einen link zum auslösen einer modalen dialog.
<a href="#" id="createCustomer">Create</a>
@section scripts{
<script type="text/javascript">
$('#createCustomer').on('click', function () {
$.get('/Customer/Create', function (data) {
$('#modalContainer').html(data);
$('#myModal').modal({});
});
});
Erstellen.cshtml ist eine Teilansicht.
@model Demo.Web.Models.CustomerVm
@using (Html.BeginForm("Create", "Customer", FormMethod.Post, new { @id="createForm" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Customer</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Auf dem controller gibt es eine actionmethod das gibt einen teilweisen Blick für das Formular erstellen.
public ActionResult Create()
{
return PartialView("Create");
}
Ansicht modal
public class CustomerVm
{
[Required]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
bevor ich es geändert werden, ein Modaler dialog .. alles lief, aber jetzt weiß ich nicht wie es zu lösen ist. Wie kann ich die Validierung der Arbeit mit dialog? Natürlich will ich nicht umschreiben, die Validierung Regeln, die auf den client-script .. ich möchte es aus arbeiten, view model .. danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da das Formular nicht auf der Seite Hinzugefügt, wenn die Seite geladen wird, die unaufdringlich die Validierung wird nicht abholen. Es gibt zwei Möglichkeiten, dieses Problem zu beheben.
$.validator.unobtrusive.parse("#id-of-the-form");
Wenn Sie das laden der dialog dynamisch registrieren Sie sich einfach der unauffällige überprüfung im enthaltenden element change-Ereignis:
Fügen Sie einfach die folgenden Skripts in Ihrem Formular Erstellen-Ansicht:
In partialview der Seite erstellen -> modal-header, Modell-Körper, modal-footer und javascript-code in die
<script>your code </script>
- also nicht<script>your code</script>
im@section Scripts{}
und es wird funktionieren.