2010-02-13 4 views
0

나는 이것을 묻는 방법을 정말로 모르므로 조금 벗어난다면 용서해주십시오.보기에서 "Namespace.ObjectName"대신 "ObjectName"사용

저는 ProjectersonData 인터페이스에서 Student : IPerson 클래스와 Employee : IPerson을 가지고 있습니다.

내 컨트롤러에서 Project.Data 및 Project.Services에 대한 참조를 추가하고 적절한 경우 명령문을 사용하여 추가합니다.

필자는 필자는 Project.Data.IPerson에 대한 강력한 형식의 뷰를 작성하므로 유형에 따라 뷰를 동적으로 렌더링 할 수 있습니다.

내가 원하는 것은 Model.getType()이 "Project.Data.Student"가 아닌 "Student"를 반환하는 것입니다. 이것이 가능합니까?

답변

0

추가 나는 네임 스페이스를 추가했다 web.config에서 facepalm

1

Model.GetType().NameStudent을 반환합니다.

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

왜 :

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

+0

내가 가진 문제는 "학생"이라고 말할 수 없다는 것입니다. "Project.Data.Student"라고 말해야합니다. 보기가 전체 네임 스페이스없이 개체 (심지어 IPerson)를 해결할 수없는 것 같습니다. – Dan

+0

보기의 가져 오기 명령? – mare

0

그래 대린 내가 잘하지만, 다음 뷰의 시작 부분에 다음과 같은

추가

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

업데이트 :보기에이 같은 유형을 테스트 할 수 있습니다 강력하게 형식화 된 뷰를위한 인터페이스가 있기 때문에 인터페이스 사용이 실제로 작동하는지 확신 할 수 없습니다. 나는 대신 추상 클래스를 사용하는 것을 고려할 것이다. 당신이하는 것처럼 인터페이스를 사용하는 것은 실제로 의미 상 잘못되었습니다.

여기 스택의 "인터페이스 대 추상 클래스"를 검색하면 많은 질문이 다루는 찾아야한다 ..

+0

좋은 일, Marko -이 문제를 조사하고 있으므로 최선의 방법으로 모든 것을 읽을 수 있습니다. – Dan

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

저는 실제로 LINQ를 통해 "PersonType"열거 형 참조가 있습니다. – Dan