2010-01-20 5 views
0

c'est un suivi de la question que j'ai posté hier. J'ai pu mettre en place les cases à cocher correctement, merci à toutes vos suggestions. Maintenant, j'essaie d'aborder le second problème qui consiste à maintenir l'état de la case à cocher lors d'une actualisation de la page ou lorsqu'un utilisateur clique sur le bouton de retour sur son navigateur. Encore une fois je le code exemple suivant à mon avis:HTML erreur Checkbox Aide

<tr> 
    <td><label for="Name">Name</label></td> 
    <td><%= Html.Encode(entity.CONTACT_NAME)%></td> 
    <td><%= Html.CheckBox("Name", false, new {@value = Html.Encode(entity.CONTACT_NAME)}) %></td> 
    </tr> 

Quand je coche la case, je reçois la valeur suivante pour la clé Nom dans la ModelState « John Doe, false ». D'après ce que je comprends, l'aide checkbox html obtient sa valeur à partir du ModelState. Mais lorsque la page re-rendu et obtient à cette ligne de code, je reçois l'erreur suivante:

The parameter conversion from type 'System.String' to type 'System.Boolean' failed 

Encore une fois, mon objectif est simplement de maintenir l'état de case à cocher, ne sais pas ce qui se passe ici.

MISE À JOUR:

Si la case obtient la valeur de la ModelState lors d'une nouvelle rendu et si les clés sont stockées sous forme de chaînes, comment puis-je les convertir en valeurs booléennes?

Répondre

0

a été en mesure de le résoudre, merci pour toutes vos suggestions. Dans mon cas, je devais passer le ModelState comme paramètre dans une méthode qui regardait toutes les valeurs dans le ModelState qui n'étaient pas seulement fausses et les mettait à vrai en appelant le SetModelValue.

Exemple:

errorHandler(ModelStateDictionary modelState, ChangeRequest aChangeRequest) 
{ 
       if (aChangeRequest.Job != "false") 
       modelState.SetModelValue("Job", new ValueProviderResult("true", "true", new CultureInfo("en-US"))); 

    //Etc. 
} 

Pour ce projet, je créé un objet de classe qui a été rempli avec l'aide de valeurs TryUpdateModel dans mon contrôleur, puis passé ceci dans la méthode. Je suis sûr qu'il y a un moyen beaucoup plus efficace, mais cela semble fonctionner, toutes les suggestions supplémentaires sont les bienvenues.

1

que vous essayez de définir la valeur de la case à cocher au nom de contact de l'entité, qui je suppose est une chaîne?

Vous devrez définir la valeur à une propriété booléenne de l'entité.

0

Assurez-vous que la propriété ou l'expression que vous utilisez pour définir la valeur de la case à cocher est un type booléen.

+0

Je comprends, mais si les valeurs booléennes sont passés comme des chaînes dans les initiales POST, à savoir « Nom, false » « true, false », ou dans mon cas, comment suis-je censé les convertir en booléen? ? Je peux changer le nom de chaîne en "vrai", mais c'est toujours une chaîne. – kingrichard2005