2009-04-14 7 views
2

Quelle est la manière correcte de traiter les cases à cocher avec asp.net MVC et les vues fortement typées. J'ai une classe 'Bar' qui a un membre 'foo'. 'foo' est le type 'byte'.Gérer les cases à cocher avec des vues fortement typées dans Asp.net MVC

Maintenant, ce que je voudrais faire, est quelque chose comme ceci dans le contrôleur:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Page(Bar bar) 
{ 
    if (ModelState.IsValid) 
    {  
     SaveChanges(bar); 
... 

Et quelque chose comme ça dans la vue

<%=Html.CheckBox("foo", Model.foo) %> 

Bien sûr, le code ci-dessus ne fonctionne pas, parce que DefaultModelBinder (?) ne sait pas comment convertir la sortie de Checkbox (discutée here) en byte pour que ModelState.IsValid soit false.

Comment le faire fonctionner? Reliures de modèle personnalisé? Comment? On dirait un problème simple, mais je n'ai pas réussi à trouver un guide complet pour ce faire. (oui, je sais que je craque googling :-)

Répondre

4

Dans votre modèle - convertir le Byte en une propriété Bool. Vous pouvez toujours stocker dans la base de données sous la forme d'un octet. Fais juste en sorte que le get/set utilise un bool et convertis-le.

Questions connexes