- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
是否可以将 css 类注入(inject)到封装在 MvcHtmlString
中的 HTML 元素中? ?
作为我正在构建的框架的一部分,我的任务是为表单元素(TextBox
、TextBoxFor<>
等)创建我自己的 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 框架表单扩展方法的功能添加/附加
最佳答案
您目前的系统似乎还不错。您不能注入(inject)/覆盖 HtmlHelper 类的默认样式,您可以查看 HtmlHelper
's input extensions here 的源代码如果你愿意的话。
我能想到的唯一其他方法是使用扩展方法,就像它在实际 ASP.NET 源代码中的做法一样。这是一个示例,函数的名称可以是您想要的任何名称,但它需要与 TextBoxFor
不同,因为它具有相同的参数列表。
public static class HtmlHelperExtensions
{
public static MvcHtmlString IntTextFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
{
return htmlHelper.TextBoxFor(expression, new { @class = "int-text" });
}
}
用法就像常规 MVC 一样,只包含扩展方法的命名空间。
@using MyProject.Helpers;
@Html.IntTextFor(e => e.Age)
关于c# - 如何将 css 类注入(inject) MvcHtmlString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831779/
我是一名优秀的程序员,十分优秀!