Как использовать несколько атрибутов DisplayName, используя Entity Framework и ASP.Net Mvc 2 - PullRequest
1 голос
/ 22 марта 2010

В зависимости от того, где я использую свой класс, я хочу иметь возможность отображать другое DisplayName.
У меня есть следующий класс:

[MetadataType(typeof(PortalMetaData))]
[System.Web.Mvc.Bind(Exclude = "PortalId")] 
public partial class Portal
{
    public Portal()
    {
      this.Created = DateTime.Now;
    }
}
public class PortalMetaData
{
    [Required(ErrorMessage = "Portal name is required")]
    [StringLength(50, ErrorMessage = "Portal name must be under 50 characters")]
    public object PortalName { get; set; }

    [Required(ErrorMessage = "Description is required")]
    public object Description { get; set; }
}

У меня есть соответствующая таблица в базе данных портала

Я использую таблицу Portal с PortalController для администратора сайта для обновления записей в таблице портала.

Я хочу, чтобы другой пользователь с другой ролью (AsstAdmin) мог также обновить эту таблицу.
Чтобы облегчить это, я думаю о создании отдельного частичного класса, который каким-то образом связан с моделью портала. Это позволило бы мне отображать ограниченные поля для обновления с помощью AsstAdmin, и я могу отображать другое имя для поля.

Как я могу выполнить эту задачу? Если я добавлю следующий класс, который наследует от Portal, я получу исключение:

Невозможно привести объект типа «Project1.Mvc.Models.Portal» для ввода 'Prpject1.Mvc.Models.Site'.

[MetadataType(typeof(SiteMetaData))]
public class Site : Portal
{
    public Site() {  }        
}

public class SiteMetaData
{
   [Required(DisplayName = "Site Description")]
   public object Description { get; set; }
}

1 Ответ

1 голос
/ 22 марта 2010

Вы можете создать две разные модели представления, которые имеют только те поля, которые может видеть каждый тип пользователя. При сохранении вам понадобится служба для сопоставления с сущностью портала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...