2011-06-16 4 views
0

J'essaie d'utiliser la fonction de validation à distance intégrée à ASP.net MVC 3, que j'ai utilisée quelques fois avec succès. Cependant, en raison d'un élément de formulaire sur la page ayant un nom qui inclut "[" et "]" (une collection hors du modèle principal), je ne peux pas sembler utiliser la validation à distance.Validation à distance avec des éléments contenant des caractères spéciaux

Le Html qui est rendu sur ma page est:

<input id="Leads_0__OpenDate" class="datepicker medium hasDatepicker valid" type="text" name="Leads[0].OpenDate" data-val-required="Open Date is required." data-val="true"> 

En général, je voudrais juste ajouter à mon ViewModel pour le champ OpenDate:

[Remote("ValidateOpenDate", "Opportunity", ErrorMessage = "The open date can not be in the future.")] 

Cependant, étant donné que le domaine est partie d'une collection de Leads, elle est renvoyée à l'action ValidateOpenDate sous la forme "Leads [0] .OpenDate", ce qui n'est pas un nom valide à mettre dans les paramètres, car C# n'autorise pas "[" ou "]" dans le nom de la variable.

Y a-t-il quelque chose que je peux faire pour que la validation à distance fonctionne, au lieu de simplement écrire du javascript personnalisé?

Répondre

0
public ActionResult ValidateOpenDate() 
{ 
    var openDate = Request["Leads[0].OpenDate"]; 
    ... 
} 

ou (non testé, pas sûr si cela va fonctionner à cause des parenthèses):

public ActionResult ValidateOpenDate([Bind(Prefix = "Leads[0]")] string openDate) 
{ 
    ... 
} 
+0

Merci beaucoup! Pourquoi n'ai-je pas pensé à utiliser la demande? Le préfixe de liaison n'a malheureusement pas fonctionné, mais la demande est bien! – mandreko

1

En fait, le second doit ressembler

public ActionResult ValidateOpenDate([Bind(Prefix = "Leads[0].OpenDate")] string openDate) 
    { 
     ... 
    } 

probablement entendu dire que d'ailleurs, mais juste le document ici aussi bien.

Questions connexes