Использование «ObjectName» вместо «Namespace.ObjectName» в представлении - PullRequest
0 голосов
/ 13 февраля 2010

Я действительно не знаю, как спросить это, так что простите, если это звучит немного не так.

У меня есть интерфейс IPerson, класс Student: IPerson и Employee: IPerson в пространстве имен Project.Data.

В моем контроллере я добавляю ссылку на Project.Data и Project.Services и при необходимости добавляю операторы использования.

На мой взгляд, я создаю строго типизированное представление для Project.Data.IPerson, чтобы я мог динамически отображать представления на основе типа.

Я хочу, чтобы Model.getType () возвращала «Student», а не «Project.Data.Student» - возможно ли это?

Ответы [ 4 ]

1 голос
/ 14 февраля 2010

Добавить нового члена только для чтения

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"; }
}
1 голос
/ 13 февраля 2010

Model.GetType().Name вернет Student. По вашему мнению, вы можете проверить тип как это:

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

UPDATE:

Добавьте следующее в начало представления:

<%@ Import Namespace="Project.Data" %>
0 голосов
/ 14 февраля 2010

Мне пришлось добавить пространства имен в web.config facepalm

0 голосов
/ 13 февраля 2010

Да, Дарин прав, но я не уверен, что использование интерфейса действительно сработает, потому что у вас есть интерфейс для вашего строго типизированного представления. Я хотел бы рассмотреть возможность использования абстрактного класса вместо. Потому что на самом деле семантически неправильно использовать интерфейсы, как вы.

ищите «интерфейс против абстрактного класса» здесь, в стеке, вы должны найти много вопросов, касающихся этого ..

...