2010-02-13 6 views
0

Je ne sais pas vraiment comment demander cela, alors pardonnez-moi si cela semble un peu off.L'utilisation de "ObjectName" au lieu de "Namespace.ObjectName" dans une vue

J'ai une interface IPerson, une classe Student: IPerson et un employé: IPerson dans l'espace de noms Project.Data.

Dans mon contrôleur, j'ajoute la référence pour Project.Data et Project.Services et j'ajoute des instructions using le cas échéant. À mon avis, je crée une vue fortement typée à Project.Data.IPerson - afin que je puisse dynamiquement rendre des vues basées sur le type.

Ce que je veux, c'est que Model.getType() renvoie "Student" et non "Project.Data.Student" - est-ce possible?

Répondre

0

J'ai dû ajouter les espaces de noms dans le web.config facepalm

1

Model.GetType().Name renverra Student. À votre avis, vous pouvez tester le type comme ceci:

<% if (Model is Student) { %> 
    <div>Student</div> 
<% } else if (Model is Employee) { %> 
    <div>Employee</div> 
<% } %> 

MISE À JOUR:

Ajouter ce qui suit au début de la vue:

<%@ Import Namespace="Project.Data" %> 
+0

Pourquoi pas:

<%: Model.GetType().Name %>
? – jfar

+0

Le problème que j'ai est que je ne peux pas dire "étudiant" - je dois dire "Project.Data.Student". Il semble que la vue ne peut pas résoudre les objets (même IPerson) sans l'espace de noms complet – Dan

+0

Directives d'importation dans View? – mare

0

Ouais Darin est juste, mais je Je ne suis pas sûr que l'utilisation de l'interface fonctionne, parce que vous avez une interface pour votre vue fortement typée. Je considérerais plutôt utiliser la classe abstraite. Coz c'est vraiment sémantiquement faux d'utiliser des interfaces comme vous le faites.

recherche « l'interface par rapport à la classe abstraite » ici sur la pile, vous devriez trouver de nombreuses questions y faire face ..

+0

De bonnes choses, Marko - Je suis juste à la recherche de ce problème, donc je suis impatient de lire tout ce que je peux sur la meilleure approche! – Dan

1

Ajouter un nouveau lu seul membre

class Project.Data.IPerson{ 
    public string Role{get; } 
} 
class Project.Data.Student : IPerson{ 
    public string Role{get{return "Student"; } 
} 
class Project.Data.Employee : IPerson{ 
    public string Role{get{return "Employee"; } 
} 
+0

J'ai en fait un "PersonType" enum je référence via LINQ – Dan