【问题标题】:HtmlHelper class in System.Web.Webpages.Html vs System.Web.Mvc namespacesSystem.Web.Webpages.Html 与 System.Web.Mvc 命名空间中的 HtmlHelper 类
【发布时间】:2012-04-10 00:42:44
【问题描述】:

在 ASP.NET MVC3 中,我试图设置验证错误帮助器方法设置的 css 类。 (不是this question,接受的答案只是添加类,我想完全覆盖它。)在查看MVC3 源代码时,我在HtmlHelper 类上找到了ValidationInputCssClassName 属性。它是可设置的,如果设置,它将值存储在存储提供程序中。属性的 get 方法返回 [提供者值] ?? [默认类名]。

现在,如果您在控制器代码中输入HtmlHelper.ValidationInputCssClassName (MSDN entry),您会看到它是一个静态只读字段。原因是HtmlHelper类有两个,一个在System.Web.Mvc命名空间,一个在System.Web.Webpages.Html命名空间。属性System.Web.Webpages.Html.HtmlHelper.ValidationInputCssClassName(MSDN entry)可以设置,但是不管我在哪里设置,似乎对生成的代码都没有任何影响。

我错过了什么?这些类之间有什么区别?

【问题讨论】:

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


    【解决方案1】:

    我不是很肯定,但我认为System.Web.WebPages.Html 用于将 ASP.net WebForms 与 Razor 一起使用。

    由于ValidationInputCssClassName 等都是只读字段,我认为解决此问题的唯一方法是创建自己的 HtmlHelper 扩展方法,以便自定义此行为。

    来自MSDN

    System.Web.WebPages 命名空间包含使用的核心类 呈现和执行使用 ASP.NET 网页构建的页面 使用 Razor 语法。

    【讨论】:

    • 我正在使用 Razor。 Web.WebPages 命名空间中的 HtmlHelper 属性显然旨在被某些东西修改。 Roll-your-own 是最后的手段,我不想在每个 MVC 版本中移植更新!
    • @Paul 我说的是带有 Razor 的 WebForms。这只是一个猜测,但这听起来像是它应该用于的。 ASP.net WebForms Razor 页面。
    【解决方案2】:

    查看命名空间描述,其中一个似乎是为 Razor 设计的,旨在与 WebMatrix 一起使用。

    参考:http://msdn.microsoft.com/en-us/library/gg549171(v=vs.99).aspx

    还有:

    System.Web.Mvc 命名空间包含用于创建 HTML 元素的类。

    此命名空间中的类型位于 System.Web.WebPages 程序集中,并且与 System.Web.Mvc 程序集中的等效类型相同。

    参考:http://msdn.microsoft.com/en-us/library/system.web.mvc(v=vs.99).aspx

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2012-06-19
      • 1970-01-01
      • 2015-01-04
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多