JK.*_*JK. 7 c# asp.net-mvc html-helper data-annotations
我想用我自己的帮助器覆盖Html.TextBoxFor(),它有完全相同的签名(当然是一个不同的命名空间) - 这是可能的,如果是的话,怎么样?
这样做的原因是我在现有应用程序中有100多个视图,我想改变TextBoxFor的行为,以便在属性具有[StringLength(n)]注释时输出maxLength = n属性.
自动输出maxlength = n的代码在这个问题中:来自Asp.Net MVC中DataAnnotations StringLength的文本框的maxlength属性.但我的问题并不重复 - 我正在尝试创建一个更通用的解决方案:DataAnnotaion自动流入html,而不需要编写视图的人员需要额外的代码.
在引用的问题中,您必须将每个Html.TexBoxFor更改为Html.CustomTextBoxFor.我需要这样做,以便不需要更改现有的TextBoxFor() - 因此创建一个具有相同签名的帮助程序:更改帮助程序方法的行为,并且所有现有实例将在没有任何更改的情况下正常工作(100 + views,至少500 TextBoxFor()s - 不想手动编辑它).
我试过这段代码:(并且我需要为TextBoxFor的每次重载重复它,但是一旦根问题解决了,那将是微不足道的)
namespace My.Helpers
{
public static class CustomTextBoxHelper
{
public static MvcHtmlString TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes, bool includeLengthIfAnnotated)
{
// implementation here
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我在Html.TextBoxFor()视图中遇到编译器错误:"调用在以下方法或属性之间是不明确的"(当然).有没有办法做到这一点?
是否有一种替代方法可以让我改变Html.TextBoxFor的行为,以便不需要更改已经使用它的视图?
| 归档时间: |
|
| 查看次数: |
6266 次 |
| 最近记录: |