2010-09-02 3 views
2

Vous avez un problème werid en vue, si je définir avecBug avec tuple et vues typées?

Inherits="System.Web.Mvc.ViewPage<List<Tuple<string, DateTime?, double?, double?, double?>>>" 

je reçois l'erreur werid:

CS1003: Syntax error, '>' expected 
Line 118: public class views_report_intrestcalc_aspx : System.Web.Mvc.ViewPage<List<Tuple<string, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler { 

Mais il workes parfaitement si je supprimer le dernier "double?". Un bug dans le comiller asp.net?

Répondre

3

Oui, le code généré par le compilateur ASP.NET est rompu pour votre exemple. Je peux recréer ce (Visual Studio 2010, .NET 4, ASP.NET MVC 2) et obtenez:

public class views_home_index_aspx : System.Web.Mvc.ViewPage<List<Tuple<string, 
     System.Web.SessionState.IRequiresSessionState, System.Web.IHttpHandler { 
    private static bool @__initialized; 
    ... 

Quand il doit être:

public class views_home_index_aspx : System.Web.Mvc.ViewPage<List<Tuple<string, 
     DateTime?, double?, double?, double?>>>, 
     System.Web.SessionState.IRequiresSessionState, 
     System.Web.IHttpHandler { 
    private static bool @__initialized; 
    ... 

Apparemment, il y a une limite à le montant de abuse cela peut prendre.

2

Bien que je ne sais pas pourquoi votre code ne compile pas (il semble à droite) au lieu d'utiliser un Tuple Je voudrais fortement recommandez-vous en utilisant un modèle de vue (probablement même le compilateur selfs sur la laideur :-)) :

Inherits="System.Web.Mvc.ViewPage<List<MyViewModel>>" 

HAVING:

<%: Model.Username %> 
<%: Model.Date %> 

est beaucoup plus lisible que:

<%: Model.Item1 %> 
<%: Model.Item2 %> 
Questions connexes