2011-05-16 5 views
5

Je suit ViewModel:ASP.NET MVC3 problème de validation

public class Bulletin1ViewModel 
    { 
     [Required] 
     public String NumberDelegations { get; set; } 

     [Required] 
     public String TravelPlans { get; set; } 
    } 

Ce que je veux utiliser dans mon Vue:

 @using ErasProject.Models 
     @model ErasProject.Models.Bulletin1ViewModel 
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 
<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> 

     @using (Html.BeginForm()) 
     { 
      @Html.ValidationSummary(true) 

      <fieldset> 

      <p> 
      @Html.EditorFor(model => model.NumberDelegations) 
      @Html.ValidationMessageFor(model => model.NumberDelegations) 
      </p> 

      <p> 
      @Html.EditorFor(model => model.TravelPlans) 
      @Html.ValidationMessageFor(model => model.TravelPlans) 
      </p> 

      <p> 
      <input type="submit" value="Submit" /> 
      </p> 

      </fieldset> 

    } 

Mais ma validation ne se déclenche pas. Ni côté client ni côté serveur. Quelqu'un pourrait avoir une idée pourquoi? Merci.

Répondre

5

vous devez ajouter à la fois jquery et plugin jQuery Validation (et éventuellement, la bibliothèque discrète)

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"   type="text/javascript"></script> 
<script src="http://ajax.microsoft.com/ajax/jQuery.Validate/1.7/jQuery.Validate.min.js" type="text/javascript"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> 

donc, votre vue sera aussi:

@using ErasProject.Models 
@model ErasProject.Models.Bulletin1ViewModel 

<script src="jquery.min.js"></script> 
<script src="jQuery.Validate.min.js"></script> 
<script src="jquery.validate.unobtrusive.min.js"></script> 

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 

    <fieldset> 

    <p> 
    @Html.EditorFor(model => model.NumberDelegations) 
    @Html.ValidationMessageFor(model => model.NumberDelegations) 
    </p> 

    <p> 
    @Html.EditorFor(model => model.TravelPlans) 
    @Html.ValidationMessageFor(model => model.TravelPlans) 
    </p> 

    <p> 
    <input type="submit" value="Submit" /> 
    </p> 

    </fieldset> 

} 

vient d'être ajouté à votre objet et créé un Add Action comme:

public ActionResult Add() 
{ 
    return View(); 
} 

et créé une vue en utilisant le modèle Create et la classe Bulletin1ViewModel qui ressemblent à ceci:

@model WebApp_MVC3.Models.Bulletin1ViewModel 

@{ 
    ViewBag.Title = "Add"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Add</h2> 

<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> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Bulletin1ViewModel</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.NumberDelegations) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.NumberDelegations) 
      @Html.ValidationMessageFor(model => model.NumberDelegations) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.TravelPlans) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.TravelPlans) 
      @Html.ValidationMessageFor(model => model.TravelPlans) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

sans rien faire de plus, le résultat est:

original file

enter image description here

I revérifier les bibliothèques javascript ...

+0

Ils sont déjà ajoutés. C'est une application MVC3 avec le moteur RazorView. Et j'ai vérifié qu'ils sont bien présents. – Hanz

+0

ils se chargent correctement lorsque vous voyez la source de votre page? avez-vous construit? – balexandre

+0

J'ai oublié de les ajouter dans mon post, mais ils sont là et ça ne marche toujours pas ... – Hanz

1

Ne pas utiliser

<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 

mais juste glisser-déposer les fichiers .js contenus dans votre dossier Scripts dans votre projet:

jquery-1.4.4.min.js 
jquery.validate.min.js 
jquery.validate.unobtrusive.min.js 

Cela fera que vos références aux fichiers js sont corrects.

+0

faire une mise à jour en utilisant Web Platform Installer ou en utilisant le shell de puissance ... jQuery est déjà dans la version 1.6.1 :) – balexandre