2010-07-13 6 views
0

Je le code suivant à mon avis ASPX page:MVC validation ne fonctionne pas dans Web Forms Projet

<% using (Html.BeginForm()) 
    { 
%> 
<div> 
    CustomerCode:&nbsp; 
    <%= Html.TextBoxFor(x=> x.CustomerCode) %> 
    <%= Html.ValidationMessageFor(x => x.CustomerCode)%> 

et ce code dans mon modèle:

public class MyModel 
{ 

    [Required(ErrorMessage="customer code req")] 
    [StringLength(2,ErrorMessage="must be 2 u idiot")] 
    public string CustomerCode {get; set;} 

Bien que si j'entrer dans plus de 2 charachters dans la zone de texte et soumettre la page, dans le contrôleur lorsque je fais:

 if (ModelState.IsValid) 

Il dit toujours sa validité? Qu'est-ce que je rate? J'ai mis ce projet MVC dans un projet Web Forms mais le projet MVC fonctionne bien, c'est juste la validation qui ne fonctionne pas, des idées? Merci.

Répondre

3

Assurez-vous que l'action du contrôleur accepte le modèle en tant que paramètre:

public ActionResult SomeAction(MyModel model) 
{ 
    if (ModelState.IsValid) 
    { 

    } 
    return View(); 
} 

Maintenant, si vous invoquez:

http://example.com/myapp/home/someaction?customercode=123 

Le modèle ne doit pas être valide.

+0

merci suite mais je fais déjà et il est toujours en disant qu'il est valide quand il est clairement pas! :( – Lisa

0

Hmm, ça marche pour moi sur une page de test avec le

public ActionResult Test() 
    { 
     MyModel model = new MyModel(); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Test(MyModel model) 
    { 
     if (ModelState.IsValid) { } 
     return View(model); 
    } 

<% using (Html.BeginForm()) {%> 
    <%: Html.ValidationSummary(true) %> 

    <fieldset> 
     <legend>Fields</legend> 

     <div class="editor-label"> 
      <%: Html.LabelFor(model => model.CustomerCode) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextBoxFor(model => model.CustomerCode) %> 
      <%: Html.ValidationMessageFor(model => model.CustomerCode) %> 
     </div> 

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

<% } %> 

public class MyModel 
{ 
    [Required(ErrorMessage = "customer code req")] 
    [StringLength(2, ErrorMessage = "must be 2 u idiot")] 
    public string CustomerCode { get; set; } 

} 
+0

oui j'ai essayé une application de test et cela a semblé fonctionner correctement - j'incorpore ce nouveau projet mvc sur un framework webform existant - penses-tu qu'il y a quelque chose que j'ai pu manquer dans web.config ou global Asax ?? – Lisa

+1

Peut-être vaut-il la peine de vérifier les versions de framework sur le site cible.Pas de choses évidentes à l'esprit, je suppose que c'est une de ces raisons pour lesquelles vous êtes payé :) –

+0

Salut merci pour cela mais je pense qu'il y avait quelques conflits avec mon structureMapController Fichier asax global (nécessaire pour l'injection de dépendances pour les tests unitaires) Donc à la fin au lieu d'utiliser les DataAnnotations pour la validation, j'ai utilisé les validations de la bibliothèque Microsoft Enterorise à la place et cela fonctionne ENFIN !! - Merci à tous pour essayer d'aider si :) – Lisa

Questions connexes