MVC3 la Validation Côté Client ne fonctionne pas avec Ajax.BeginForm forme
J'ai le formulaire ci-dessous une vue partielle
@model PartDetail
@using (Ajax.BeginForm("Create", "Part", null, new AjaxOptions { UpdateTargetId = "update_panel"}))
{
<h3>New @Model.PartType</h3>
<p> Serial Number:
<strong>
@Html.EditorFor(model => model.SerialNumber)
@Html.ValidationMessageFor(model => model.SerialNumber)
</strong>
</p>
<p> Name:
<strong>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</strong>
</p>
...... more relatively boiler plate code here......
<p>
<input type="submit" class="btn primary" value="Save Part"/>
</p>
}
Avec un modèle de
public class PartDetail
{
public string DateCreated { get; set; }
[StringLength(255, MinimumLength = 3)]
public string Description { get; set; }
public Guid ID { get; set; }
public string IsActive { get; set; }
public string Manufacturer { get; set; }
public IEnumerable<SelectListItem> Manufacturers { get; set; }
[StringLength(100, MinimumLength = 3)]
public string Name { get; set; }
public string PartType { get; set; }
[Required]
[StringLength(100, MinimumLength = 3)]
public string SerialNumber { get; set; }
}
Et je de référence (parent vues de ma vue partielle)
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"> </script>
Et rien n'est validé. Si je tape rien dans le Numéro de Série de la zone de texte et appuyez sur soumettre l'enregistre dans la base de données sans problèmes.
OriginalL'auteur PlTaylor | 2012-01-17
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter une OnBegin rappel à la AjaxOptions et cela devrait fonctionner.
Si cela ne fonctionne pas pour vous, un solution alternative peut-être de soumettre le formulaire à l'aide de jQuery. Ce serait ma solution préférée.
jQuery/JS fonction de soumettre le formulaire
Coller un alert('test'); dans validateForm() pour voir s'il est frappé à toutes les.
Le message d'alerte apparaît.
J'ai mis à jour ma réponse avec un jQuery style de solution. Bien qu'il ne traite pas le problème que vous rencontrez, je préfère utiliser jQuery sur Ajax et j'ai pensé vous donner la possibilité ici.
Essayez d'exécuter $.programme de validation.discrète.parse($('form')); après l'envoi de
OriginalL'auteur Nick
Dans ce cas, la décision de fichier javascript, y compris le processus est important. Votre commande d'inclure ces fichiers doivent être
Quand j'ai essayé avec ré-ordonnancement, il fonctionne très bien pour moi. L'essayer.
OriginalL'auteur Sandip
Vérifier votre site Web racine.config de la solution/projet. Elle contient les lignes suivantes?
- Elle pas à les ajouter.
OriginalL'auteur Anders Arpi
vous avez besoin de modifier votre contrôleur de l'action peu de travail de validation dans la requête Ajax
vous attrapez RenderHtml de vue partielle et d'appliquer votre validation sur elle pour l'e.g
vous devez être passer ViewName et le Modèle de RenderPartialViewToString méthode. il sera de retour que vous consultez, de validation qui vous sont appliqués dans le modèle.
OriginalL'auteur Shivkumar