Я программирую, используя ASP.NET MVC 3 с движком Razor View.Вот что я хотел бы сделать:
@Html.DisplayWithLabel(model => model.DisplayEventDate(), "When", "")
DisplayWithLabel
- это пользовательский помощник HTML, который показывает что-то с меткой.
Вот его подпись (или, по крайней мере, то, что ядумаю, что это должно выглядеть так):
public static MvcHtmlString DisplayWithLabel<TModel>(this HtmlHelper<TModel> html, Expression<Func<TModel, Func<MvcHtmlString>>> expression, string label, string cssClass)
Почему я использую свою модель так?Ну, я хотел бы иметь методы расширений для моей модели, которые помогут мне форматировать ее данные, когда это необходимо (вместо форматирования данных внутри самой модели).Например, для форматирования даты события у меня есть этот метод расширения:
public static MvcHtmlString DisplayEventDate(this MyEntity entity)
{
return new MvcHtmlString(string.Format("{0}@{1}", string.Format("{0:D}", entity.EventDate),
string.Format("{0:t}", entity.EventDate)));
}
Но когда я пытаюсь просмотреть представление, я получаю сообщение об ошибке, говорящее о том, что невозможно неявно преобразовать из MvcHtmlString
в Func<MvcHtmlString>
.
Я пытался понять это сам, но я не мог найти подсказку, поэтому, пожалуйста, помогите мне:)