使用HtmlAttributes在ASP.NET MVC中覆盖TextBoxFor Helper

时间:2011-05-19 09:41:56

标签: c# .net asp.net-mvc html-helper

尝试在ASP.NET MVC 3中使用自定义TextBoxFor来更改一些现有属性。

渲染时,

@Html.MYTextBoxFor(model => model.FirstName, new { @class = "textfield", @tabindex = "1", @maxlength = "50", @size = "30" })

但它忽略了htmlAttributes(tabindex,maxlength,size)。

public static MvcHtmlString MYTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, object htmlAttributes)
{
    string elementName = ExpressionHelper.GetExpressionText(expression);               

    MvcHtmlString normal = html.TextBoxFor(expression);
    if (normal != null)
    {
        string newValidator = normal.ToHtmlString();                
        newValidator = newValidator.Replace("data-val-required", "databvalidatormsg");
        return MvcHtmlString.Create(newValidator);
    }
    return null;
}

1 个答案:

答案 0 :(得分:2)

好吧,你没有在函数的任何地方使用htmlAttributes arg。

你不需要像...这样的东西吗?

MvcHtmlString normal = html.TextBoxFor(expression, htmlAttributes);

此外,您不需要tabindex,maxlength和size属性的@字符。