В последнее время я много раз искал лучшие практики в рамках ASP.NET MVC, особенно в отношении беспокойства. Мой вопрос здесь, если у меня есть свойство в модели, где лучше всего выполнить форматирование для этого свойства?
Я думал о нескольких вариантах, но не уверен, что лучше. В примере используется DateTime. Извините, это немного затянулось.
Вариант 1:
По мнению: @Model.TheDate.String("{0:'blah'dd/MM/yyyy}")
Я знаю, что это неправильно, потому что здесь не должно быть строки формата (что, если я хочу изменить формат во всем приложении)
Вариант 2:
Метод расширения, используемый в представлении: @Model.TheDate.DisplayItNicePlease()
Этот вид имеет смысл, потому что представление выбирает метод расширения, который будет использоваться для форматирования, а модель представления просто выставляет свойство даты представлению. Не уверен, что представление или модель представления должны отвечать за форматирование.
Вариант 3:
В методе Html Helper, например, что-то вроде Где я должен разместить декларативные HTML-помощники в ASP.NET MVC 3 , чтобы вы могли использовать:
@Html.DisplayDateNice(Model.TheDate)
Вариант 4:
Дополнительное свойство в модели представления для ее форматирования и возврата строки, например ::1010 *
public string TheDateStr
{
get
{
return TheDate.DisplayItNicePlease();
}
}
А потом в представлении у вас просто есть
@Model.TheDateStr
Очень похоже на вариант 3, только он делает представление действительно, действительно простым - представление буквально выводит то, что находится в модели, и не заботится о формате данных.
Вариант 5:
Атрибуты DisplayFormat, например:
По виду модель:
[DisplayFormat(DataFormatString = "{0:'blah'dd/MM/yyyy}")]
public DateTime TheDate { get; set; }
А потом на виду:
@Html.DisplayFor(m => m.TheDate)
Мне нравится, кроме того, что строка формата не используется повторно, поэтому включите опцию 5 ...
Вариант 6:
Какой-то обычай DisplayFormatAttribute
например NiceDateDisplayFormatAttribute
.
Мне кажется, что это может быть самым хорошим решением и хорошо работает, если вы просто хотите простое форматирование строки. Я думаю, что это усложняется, если вы хотите что-то более сложное, например, показывать относительное время ( Рассчитать относительное время в C # ), и в этом случае, возможно, лучше всего использовать метод расширения / html helper.
Возможно, есть и другие способы, о которых я даже не подозреваю ...