2010-11-29 2 views
1

J'ai un problème, et je ne sais pas quel résultat est correct.asp.net mvc2 validation agissant différemment sur deux serveurs

J'obtiens deux scénarios différents selon l'endroit où je lance l'application - local (mode débogage)/développement (sur un serveur séparé). J'ai un modèle de consultation ConsultationViewModel sur deux pages .aspx (je veux me souvenir des données entre les deux formes).

Formulaire 1 Deux objets (cordes) - Un [Obligatoire]

Formulaire 2 Deux objets (cordes) - Deux [Obligatoire]

Voici où j'obtenir différents scénarios:

• Hôte local: Form 1 - Form 2 = NO erreurs de validation • Développement: Formulaire 1 - Form 2 = Erreur de validation

Form 1

public string Rate { get; set; } 

[Required(ErrorMessage = "You must enter your comments")] 
public string Comments { get; set; } 

Formulaire 2

[Required(ErrorMessage = "Please select a option")] 
public string WhatAreYou { get; set; } 

[Required(ErrorMessage = "Please select a option")] 
public string EthnicOrigin { get; set; } 

Pourquoi le serveur de développement at-il besoin de valider WhatAreYou/EthinicOrigin est ceux-ci sont en fait jamais utilisé sur le formulaire 2?

[HttpGet] 
    public ActionResult Index() 
    { 
     ConsultationHolderViewModel consultationViewModel = new ConsultationViewModel(); 
     return View(consultationViewModel); 
    } 

    [HttpPost] 
    public ActionResult Index(ConsultationViewModel consultationViewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(consultationViewModel); 
     } 

     return View("Equalities", consultationViewModel); 
    } 

    [HttpPost] 
    public ActionResult Equalities(ConsultationViewModel consultationViewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(consultationViewModel); 
     } 

     switch (consultationViewModel.Button) 
     { 
      case "Back": 
       return View("Index", consultationViewModel); 
      case "Continue": 
       return View("Receipt", consultationViewModel); 
     } 

     return View("Equalities", consultationViewModel); 
    } 

Merci à l'avance pour toute aide,

Clare

Répondre

0

mon pari est qu'il a quelque chose à voir avec le modèle par défaut MVC2 obligatoire. Il valide toutes les propriétés du modèle. Par conséquent, si votre modèle en possède, même si vous ne les publiez pas ou même si vous n'en avez pas besoin, vous aurez toujours des erreurs de validation.

+0

Je remplis manuellement les champs obligatoires avant que ModelState.IsValid affiche toujours les messages d'erreur: consultationViewModel.WhatAreYou = "A";/consultationViewModel.EthnicOrigin = "A"; Pourquoi ferait-il cela? Comme les deux chaînes contiennent des données – ClareBear

+0

Eh bien, je suppose que ce n'est déjà pas valide au moment où votre méthode d'action est appelée. Vous voudrez peut-être ajouter les champs manquants asd HiddenFor() dans votre vue .. et en finir avec cela –

+0

Je reçois toujours la même erreur. – ClareBear

Questions connexes