У меня есть дата, которая отображается на моем View
, которая показывает последнюю дату входа пользователя в систему. Возможно, они никогда этого не делали. Поэтому он передается как nullable DateTime
.Обработка логики и констант в представлении
На пользовательском интерфейсе, я показываю это так:
<td>@(u.LastVisit != null ? u.LastVisit.Value.ToString("dd-MMM-yyyy") : "Not yet")</td>
Но у меня есть несколько проблем с этим и думаю, что это может быть плохой практикой.
Во-первых, вид теперь имеет логику. (Если значение null, покажите «Not Yet», укажите дату). Вид также определяет формат даты. Этот формат уже сохраняется как константа в файле Constants, доступном из моего контроллера. И текст «Не все же», вероятно, должен быть постоянным.
Единственный способ, которым я могу видеть вокруг этого, - вернуть строку в пользовательский интерфейс и переместить эту логику в контроллер. Но это правильный способ сделать это?
Вы можете использовать атрибут [DisplayFormat] (https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute (v = vs.110) .aspx) и установить ' DataFormatString' и 'NullDisplayText', а в представлении используйте' @ Html.DisplayFor (m => m.LastVisit) ' –
DisplayFor берет модель, я думаю? Я нахожусь в «foreach», из свойства List <> на моей модели. Таким образом, у меня есть сущность (u, в данном случае, которая является пользователем в списке.Я не уверен, как я могу использовать этот элемент User в DisplayFor. Кажется, он хочет модель. –
Craig
Тогда ее просто 'DisplayFor (m => u.LastVisit) '(или' DisplayFor (m => m [i] .LastVisit) ', если его цикл' for') –