我真的不知道怎么问这个,所以请原谅我听起来有点不合适。
我在Project.Data命名空间中有一个IPerson接口,一个Student:IPerson类和一个Employee:IPerson。
在我的控制器中,我添加Project.Data和Project.Services的引用,并在适当的位置添加using语句。
在我看来,我为Project.Data.IPerson创建了一个强类型视图 - 所以我可以根据类型动态渲染视图。
我想要的是Model.getType()返回“Student”而不是“Project.Data.Student” - 这可能吗?
答案 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
中添加名称空间