2010-04-22 2 views
3

Lorsque je crée fortement typé View dans Asp.net mvc 2, .net 4.0 avec le type de modèle Tuple, je reçois erreur lorsque Tuple ont plus de 4 produitsAsp.net mvc 2 .net 4.0 erreur lorsque Voir le type de modèle est Tuple avec plus de 4 éléments

exemple 1: type de vue est Tuple<string, string, string, string> (4-tuple) et tout fonctionne bien

vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<Tuple<string, string, string, string>>" %> 
contrôleur

:

var tuple = Tuple.Create("a", "b", "c", "d"); 
return View(tuple); 

exemple 2: type de vue est Tuple<string, string, string, string, string> (5-tuple) et j'avoir cette erreur: Compiler Error Message: CS1003: Syntax error, '>' expected

vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<Tuple<string, string, string, string, string>>" %> 
contrôleur

:

var tuple = Tuple.Create("a", "b", "c", "d", "e"); 
return View(tuple); 

exemple 3 si mon modèle de vue est de type dynamique, je peux utiliser à la fois 4-tuple et 5-tuple et il n'y a pas d'erreur sur la page

vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

contrôleur:

dynamic model = new ExpandoObject(); 
model.tuple = Tuple.Create("a", "b", "c", "d"); 
return View(model); 

ou

vue:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/WebUI.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

contrôleur:

dynamic model = new ExpandoObject(); 
model.tuple = Tuple.Create("a", "b", "c", "d", "e"); 
return View(model); 

Même si j'ai quelque chose comme Tuple<string, Tuple<string, string, string>, string> 3-tuple et l'un des éléments est également un tuple et la somme des produits dans toutes les tuples est plus que 4 je reçois la même erreur, Tuple<string, Tuple<string, string>, string> fonctionne très bien

+0

Un tuple est un ensemble ordonné et non un modèle de vue. Faites votre propre classe. – Ryan

Répondre

1

S'il vous plaît examiner : Obtenez des objets sur la liste < Tuple < object1, object2>> et les stocker dans fortement typées ViewModel

Get object out of List< Tuple < object1, object2 > > and store in ViewModel

Ce faisant, vous pouvez configurer une jointure avec 5 tables connexes. Vous (la probabilité frise la certitude) finissez avec des tuples contenant 5 objets (reflétant les tables). Itérer à travers les listoftuples et obtenir les éléments dans chaque tuple séparés dans 5 listes d'objets. Appelez-les comme je l'ai suggéré sur 5 vues partielles séparées (si vous connaissez ASP MVC 2). Si non, je crois que vous allez gérer, de toute façon. Dans peu de temps, j'espère l'essayer moi-même. Je vais, à coup sûr, au moins mettre en place une jointure avec trois tables, peut-être quatre. Cependant, je peux imaginer qu'il y aura des circonstances où quelqu'un devra se joindre à au moins cinq ... surtout, quand la base de données est hautement normalisée. Succes!

Questions connexes