Как создать свой собственный строго типизированный HtmlHelper?
Например, при использовании
@Html.TextBoxFor(v => Model.Text);
и отправив форму, значение в TextBox автоматически присваивается Model.Text
,
Я хочу написать такой специальный помощник HTML.
Я знаю, как написать такой метод расширения для отображения HTML, но как запрограммировать поведение, чтобы присвоить значение Model.WhatEver
,
Я хочу создать облако тегов, и я думаю, что было бы неплохо включить его следующим образом:
@Html.TagCloud(v => Model.SelectedTags, Model.AvailableTags)
HTML-Helper просто печатает HTML, но как я могу присвоить значения Model.SelectedTags
?
1 ответ
Посмотрите, как этот метод определяется:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression);
Это просто общий метод расширения в возвращении статического класса MvcHtmlString
, Просто напишите один и вставьте его в вид через web.config.
<pages>
<namespaces>
<add namespace="NameSpaceWithYourClass" />
Помните, что этот метод должен принять this HtmlHelper<TModel>
в качестве параметра расширения иExpression<Func<TModel, TProperty>> expression
В качестве выражения для выбора свойства, и вы будете в порядке.
Кстати: я думаю, что для ваших нужд будет лучше частичное представление, поскольку HTML для него может быть довольно сложным.