Non riesco a vedere la convalida lato client con la seguente vista parziale. Questa vista è all'interno div divettings div nella vista genitore. Ho provato un sacco di cose da StackOverflow e altri siti, niente sembra funzionare. Qualche idea?validazione lato client jQuery non funzionante in vista parziale MVC3
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("CreateT", "TAdmin", null,
new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "divTSettings"},
new { id = "CreateTForm" }))
{
<div>
<label>Name:</label>
<input type="text" name="tName" id="tName"/>
@Html.ValidationMessage("tName")
<input type="submit" value="Submit"/>
</div>
}
<script type="text/javascript">
$(function() {
$('#CreateTForm').validate({
rules: {
tName: {
required: true
}
},
messages: {
tName: {
required: 'Name required'
}
}
});
$("#CreateTForm").removeData("validator");
$("#CreateTForm").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#CreateTForm");
});
</script>
Grazie per la risposta, ma la vista parziale non viene caricato da AJAX, viene caricato dal genitore utilizzando il modello del genitore. Rende post AJAX ma la convalida non funziona nemmeno per il primo carico. E come puoi vedere ho le inizializzazioni di validazione che hai citato nel gestore di caricamento del documento. – blue
Oh, non è necessario eseguire tali inizializzazioni su document.load. Tutto quello che devi fare è includere gli script jquery, jquery.validation e jquery.validation.unobtrusive nella tua pagina. Inoltre, secondo il codice che hai mostrato, sembra che tu abbia sottoscritto il gestore '.validate' del modulo e dichiari alcune convalide personalizzate. Ma non è affatto come funziona la convalida discreta ASP.NET MVC e jQuery. Devi davvero scegliere tra l'uso di annotazioni di dati sul tuo modello di vista (cose come l'attributo '[Required]') o la definizione completa delle tue regole di convalida lato client personalizzate. –
Se decidi di scrivere le tue regole di convalida personalizzate (iscriviti al metodo '.validate' del modulo), allora dovresti rimuovere lo script' jquery.unobtrusive.validation.js' dalla tua pagina. Queste 2 cose sono completamente incompatibili. Quindi spetta a te decidere: o usi l'ASP.NET MVC integrato (e usi gli attributi di validazione come '[Required]' sul tuo modello di vista) o usi il plugin jquery.validate in modo indipendente e scrivi le tue regole personalizzate. Ma non mescolare mai i due perché sono incompatibili. –