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 :
Tout ce passe bien de ce coté, mais lorsque j'arrive à l'appel suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }
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>>.sb.AppendLine(TableRows(helper, table));
Auriez-vous une solution pour obtenir un HtmlHelper<T> a partir d'un HtmlHelper<Table<T>> ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); }
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.
Partager