如何创建自定义强类型HtmlHelper?

时间:2012-11-17 18:41:36

标签: asp.net-mvc html-helper htmlextensions

例如使用

@Html.TextBoxFor(v => Model.Text);

并提交表单后,TextBox中的值会自动分配给Model.Text

我想编写这样一个自定义HTML帮助器。

我知道如何编写这样的扩展方法来显示HTML,但是如何编写行为来分配值Model.WhatEver

我想构建一个Tag-Cloud,我认为以这样的方式包含它是个好主意:

@Html.TagCloud(v => Model.SelectedTags, Model.AvailableTags)

HTML-Helper只打印出HTML,但如何为Model.SelectedTags分配值?

1 个答案:

答案 0 :(得分:0)

了解如何定义此方法:

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可能会非常复杂。