Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Web avec .NET > ASP.NET MVC
ASP.NET MVC Forum d'entraide sur le développement de site web avec le framework ASP.NET MVC.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/01/2012, 10h52   #1
Ragnarock
Invité de passage
 
Inscription : août 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 16
Points : 4
Points : 4
Par défaut Cast HtmlHelper<Table<T>> to HtmlHelper<T>

Bonjour tout le monde,

Suite au Table déjà concues (cfr Ce post), nous avons décidés de changer le système des tables pour les rendre plus faciles à étendre afin de pouvoir rajouter des fonctionnalités plus simples par la suite.

Mon problème est le suivant :
J'ai un object de type Table<T> qui est le modèle d'une de mes vues.

J'ai donc le HtmlHelper suivant :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 public static MvcHtmlString Table<T>(this HtmlHelper<Table<T>> helper, Table<T> table) where T : IPrivateObject
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("<div class=\"EORTCTable-body\">");
            sb.AppendLine("<table>");
            sb.AppendLine(TableHeader(helper, table));
            sb.AppendLine(TableRows(helper, table));
            sb.AppendLine("</table>");
            sb.AppendLine("</div>");
            return MvcHtmlString.Create(sb.ToString());
        }
Tout ce passe bien de ce coté, mais lorsque j'arrive à l'appel suivant :
Citation:
sb.AppendLine(TableRows(helper, table));
J'ai un gros problème. Cette méthode est supposé appelé le DisplayFor de chaque objet (object de type T), mais je n'arrive pas à obtenir un HtmlHelper de type T, il est toujorus de type HtmlHelper<Table<T>>.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private static string TableRows<T>(HtmlHelper<Table<T>> helper, Table<T> table) where T : IPrivateObject
        {
            StringBuilder sb = new StringBuilder();
            foreach (var item in table.Items)
            {
                sb.AppendLine("<tr>");
                foreach (var column in table.Columns)
                {
                    sb.AppendLine("<td>");
                    var lambda = column.Property.Compile();
                    sb.AppendLine(helper.DisplayFor(obj => lambda(item).ToString());
                    sb.AppendLine("</td>");
                }
                sb.AppendLine("</tr>");
            }
            return sb.ToString();
        }
Auriez-vous une solution pour obtenir un HtmlHelper<T> a partir d'un HtmlHelper<Table<T>> ?
En créer un nouveau semblait une bonne solution, mais je n'arrive pas a fournir les paramètres corrects au constructeur.

Pour ce qui est du cast, je ne sais pas si il est possible ?

Merci de votre aide.
Ragnarock est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h00.


 
 
 
 
Partenaires

Hébergement Web