在视图中使用“ObjectName”而不是“Namespace.ObjectName”

时间:2010-02-13 15:39:23

标签: asp.net-mvc views namespaces

我真的不知道怎么问这个,所以请原谅我听起来有点不合适。

我在Project.Data命名空间中有一个IPerson接口,一个Student:IPerson类和一个Employee:IPerson。

在我的控制器中,我添加Project.Data和Project.Services的引用,并在适当的位置添加using语句。

在我看来,我为Project.Data.IPerson创建了一个强类型视图 - 所以我可以根据类型动态渲染视图。

我想要的是Model.getType()返回“Student”而不是“Project.Data.Student” - 这可能吗?

4 个答案:

答案 0 :(得分:1)

Model.GetType().Name将返回Student。在您的视图中,您可以测试这样的类型:

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

更新:

将以下内容添加到视图的开头:

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

答案 1 :(得分:1)

添加新的只读成员

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"; }
}

答案 2 :(得分:0)

是的Darin是对的,但我不确定使用界面实际上是否有效,因为你有一个强类型视图的界面。我会考虑使用抽象类。因为像你这样使用接口真的在语义上是错误的。

在Stack上搜索“interface vs. abstract class”,你应该找到许多处理它的问题..

答案 3 :(得分:0)

我必须在web.config facepalm

中添加名称空间