Настраиваемые поля в модели просмотра на основе полей модели

Я новичок в ASP.NET MVC и мне нужна помощь.

У меня есть модель под названием "Проект", упрощенная ниже:

public class Project
{
    public int ProjId { get; set; }
    public string StatusID { get; set; }
}

StatusID представляет собой строку из 1 символа и может иметь значение I (в процессе), C (завершено) или K (завершено). Поэтому, когда я получаю список проектов из базы данных, он возвращает этот односимвольный код состояния.

Однако, когда я передаю эту информацию своему представлению, я хотел бы показать полное описание, а не символ 1.

Как лучше всего подойти к этой ситуации?

Спасибо!


person Isaiah Lee    schedule 26.01.2015    source источник


Ответы (1)


Лучшим способом было бы создать отношение «один ко многим» с Statuses таблицей. Затем создайте отдельную модель представления с этой информацией.

var vm = new ProjectVM
{
    ProjId = project.ProjId,
    StatusDescription = statuses.Find(project.StatusId).Description
};

Уведомления statuses - это API репозитория, который находит правильное описание статуса.

person beautifulcoder    schedule 26.01.2015
comment
Спасибо за предложение. Я не уверен, как использовать API репозитория, но у меня есть еще один связанный с этим вопрос. Поскольку я лично знаю, что означают коды, я хочу отобразить полное описание без помощи другой таблицы поиска. Нет ли возможности использовать значения фактической модели и как-то настроить их, чтобы добавить новые поля к переданному виду? В качестве примера допустим, что кто-то хотел взять поле модели под названием Percent и добавить к нему%, когда оно отображается. Есть ли способ добавить на лету поле DisplayPercent, которое будет принимать # и добавлять к нему%? - person Isaiah Lee; 26.01.2015
comment
Вы можете сделать все это в коде Razor, но мне это кажется грязным. Вы можете объявить что-то вроде enum, чтобы отобразить это - person beautifulcoder; 27.01.2015
comment
@IsaiahLee, Вы должны задать новый вопрос, но [DisplayFormat(DataFormatString = "{0:P}")]public decimal Percent { get; set; } и @Html.DisplayFor(m => m.Percent) будут отображать 15%, если значение Percent равно 0.15 - person ; 27.01.2015