【发布时间】:2013-04-05 10:39:19
【问题描述】:
是否可以将 css 类注入到封装在 MvcHtmlString 中的 HTML 元素中?
作为我正在构建的框架的一部分,我的任务是为表单元素(TextBox、TextBoxFor<> 等)创建我自己版本的 MVC 扩展方法,但需要注意以下几点:
- 他们必须创建正确的 HTML 标记,包括 CSS 类,以匹配已经为网站设计的样式。在大多数情况下,这只是意味着添加一个特定的类。
- 它们必须尽可能忠实于 MVC 扩展方法,以便开发人员能够轻松地使用它们
大多数(如果不是全部)MVC 扩展方法返回一个MvcHtmlString,因此模仿该功能的最简单方法是直接从我的方法中调用这些方法。我有自己的 Html Helper OuHelper,我的框架正在使用它,因此希望创建例如 TextBox 的开发人员会调用以下内容:
`@Ou.TextBoxFor(m => m.Username)
我希望生成的 Html 像这样呈现:
<input type="text" name="Username" id="Username" class="int-text" />
如果我创建自己的重载版本,就像它们在 MVC 框架中一样,我将能够控制在需要的地方添加额外的 CSS 类,但对于这些方法的 HTML 输出的如此小的变化来说,这似乎有点过头了。我需要提供所有重载的等效实现(仅对于TextBox,当您计算通用和非通用版本时,大约有 12 个)。我想做的是反向TagBuilder(从输出开始并从中创建一个对象,使MergeAttributes之类的东西可用)但我认为这是不可能的。
明确一点:我正在编写的框架代码需要自己添加 css 类,但开发人员应该可以使用我创建的扩展方法添加他们自己的自定义 css 类。这些将根据标准 MVC 框架表单扩展方法的功能添加/附加
【问题讨论】:
标签: c# css asp.net-mvc-3