jeudi 4 février 2016

ASP.NET MVC 4 Razor Html.Helpers functions samples

Vous cherchez des exemples d'utilisation des méthodes helpers, vous êtes comme moi. Je pratique ASP.NET MVC depuis des mois, je suis capable de développer de nouvelles fonctionnalités d'installer de déployer un site. Et puis je me rends compte qu'en fait je ne maîtrise même pas totalement une vulgaire liste de boutons radios.

Je suis stupéfait du peu d'exemples que l'on trouve sur Internet, je vais essayer ici, d'y remédier en vous donnant le mien. J'ai mis tu temps à trouver la page suivante dans MSDN :

Rendering a Form in ASP.NET MVC Using HTML Helpers

https://msdn.microsoft.com/en-us/library/dd410596(v=vs.100).aspx
Exemples, un peu intéressant d'utilisation des fonctions Html.Helpers même si ce n'est pas du Razor...

Les autres pages n'ont vraiment aucun intérêt ! Et pourtant, lorsque l'on cherche sur Internet, on retombe toujours dessus ! Par exemple la page :

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.radiobutton(v=vs.100).aspx
ne vous apprendra aucunement à utiliser la fonction @Html.RadioButton. Elle n'a aucun intérêt. C'est assez incroyable !

Même le site de StackOverFlow est relativement muet :

http://stackoverflow.com/questions/14313475/how-to-add-a-htmlattributes-in-this-htmlhelper
Un exemple, pas très intéressant ...

http://stackoverflow.com/questions/23382612/set-a-radiobuttonfor-checked-by-default-within-a-foreach-loop
Là c'est intéressant, la remarque de "martennis" est la bonne : Si l'attribut "checked" est présent, peu importe ce qu'il y  dedans ! Le bouton sera coché ! Et comme c'est une radiolist, ce sera le dernier qui sera coché ! Incroyable à croire que cela n'intéresse personne ... ASP.NET MVC est mort et on ne m'a pas prévenu ???

ToBeContinued ...

Concernant la gestion des RadioButton, il y a plein de problèmes mais voici le début d'une solution :

J'ai donc passé un bon moment à triturer ces exemples, à essayer un tas choses qui n'ont pas fonctionnées, pour finalement trouver le début d'une solution.

RadioButton Html Helper Solution

Controller

        public ActionResult PageItems() 
        {
            var items = new List<SelectListItem>
            {
                new SelectListItem { Value = "1", Text = "Blue", Disabled = false },
                new SelectListItem { Value = "2", Text = "Red" },
                new SelectListItem { Value = "3", Text = "Green", Selected = true },
                new SelectListItem { Value = "4", Text = "Yellow", Selected = true },
                new SelectListItem { Value = "5", Text = "Black" }
            };

            return View( items  );
        }

View

@model List<SelectListItem>

<table style="margin:30px;">
@foreach ( var item in Model )
{
<tr>
<td>
@Html.RadioButtonFor( m => item.Text, "name_value" , item.Selected == true ? (object)new { @checked = "checked" } : new { } ) @item.Text
</td>
</tr>
}    
</table>

Voilà donc comment on utilise correctement la paramètre "Object htmlAttributes" pour sélectionner automatiquement le SelectListItem d'une list de Radiobox au démarrage de la page.

Voici le résultat de l'exécution


Enfin un RadioButton issue d'un @Html.Helper avec le bon item "selected"
L'élément "Yellow" de la RadioButton liste est sélectionné à l'init ! Enfin ! Razor c'est la lutte.
 

1 commentaire: