Как создать свой собственный строго типизированный 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 для него может быть довольно сложным.

Другие вопросы по тегам