2010-07-25 14 views
0

Questions de débutant à venir:Basic View Question de référence de la classe du modèle. (ASP.net MVC)

Où dois-je mettre mes déclarations de modèle de vue? J'ai créé un fichier appelé "ViewModels.cs" dans mon dossier "Modèles". J'ai créé quelques cours Voir modèle, dont un appelé RatingViewModel:

using System; 
using System.Collections.Generic;var 
using System.Linq; 
using System.Web; 

namespace Web.Model 
{ 
public class ViewModels 
{ 

    public class RatingViewModel 
    { 
     public User Rater { get; set; } 
     public Rating Rating { get; set; } 
    } 

} 

} V

Maintenant, je suis en train de créer une fonction de classe aide/service qui retourne un nouvel objet RatingViewModel.

J'ai créé un fichier «RatingsHelpers.cs». Mais quand j'essaye de créer un nouvel objet RatingViewModel, il n'a aucune idée de ce dont je parle. Je ne peux pas comprendre. Ai-je manqué une référence? Comment puis-je créer/retourner un nouvel objet View Model à partir de ma classe d'assistance/service?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Text; 
using Web.Model; 

namespace System.Web.Mvc 
{ 
    public static class RatingsHelpers 
    { 
     public static RatingViewModel functionname() 
     { ..... } 

Mais il ne sait pas ce que "RatingViewModel" est ...!?!?!? Je sais juste que cela devrait être évident.

Tirer mes cheveux,

Johnny

+0

pas sûr que vous pouvez utiliser "System.Web.Mvc" comme propre espace de noms. – mxmissile

Répondre

2

Pour résumer:

  1. Vous avez créé une classe ViewModels dans l'espace de noms Web.Model. Cette classe déclare une classe imbriquée appelée RatingViewModel
  2. À l'intérieur de l'assistant RatingsHelpers situé dans l'espace de noms System.Web.Mvc, vous essayez d'accéder à la classe RatingViewModel.

Vous pouvez réaliser cela en utilisant ViewModels.RatingViewModel mais je ne vous recommanderais pas de le faire. Nidifier des cours comme celui-ci n'a aucun sens.

Au lieu de cela vous pouvez placer chaque classe de modèle de vue dans un fichier .cs séparé et de le mettre directement dans l'espace de noms Web.Model:

namespace Web.Model 
{ 
    public class RatingViewModel 
    { 
     public User Rater { get; set; } 
     public Rating Rating { get; set; } 
    } 
} 

Ensuite, dans l'utilisation de classe d'aide pourrait utiliser directement la classe RatingViewModel.

+0

Merci beaucoup! – johnnycakes

2

Le problème est que vous mettez la classe RatingViewModel dans la classe ViewModels, ce qui signifie qu'il est une classe enfant de ViewModels. Je ne suis pas sûr que ce soit le comportement que vous voulez. Si vous voulez appeler une classe enfant, vous devez écrire ViewModels.RatingViewModel pour référencer la classe.

2

Expansion de ce que dit Scripni. Avoir une classe RatingViewModel imbriquée dans une classe ViewModels à l'intérieur du Web.Models semble superflue. Vous voulez probablement vous débarrasser de la classe externe ViewModels.