【问题标题】:How to create custom strongly typed HtmlHelper?如何创建自定义强类型 HtmlHelper?
【发布时间】:2012-11-17 18:41:36
【问题描述】:

例如当使用一个

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

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

我想写一个这样的自定义 HTML 助手。

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

我想构建一个标签云,我认为以如下方式包含它是个好主意:

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

HTML-Helper 只是打印出 HTML,但我如何将值分配给 Model.SelectedTags

【问题讨论】:

  • 想一想:v 是什么?为什么会在那里?

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


【解决方案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&lt;TModel&gt; 作为扩展参数,并且 Expression&lt;Func&lt;TModel, TProperty&gt;&gt; expression 作为选择属性的表达式,你会没事的。

顺便说一句:我认为你需要更好的局部视图,因为它的 HTML 可能相当复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2013-01-22
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多