Перезаписать TextBoxFor Helper в ASP.NET MVC с помощью HtmlAttributes - PullRequest
2 голосов
/ 19 мая 2011

Я пытаюсь использовать пользовательский TextBoxFor в ASP.NET MVC 3 для изменения некоторых существующих атрибутов.

При рендеринге

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

Но он игнорирует атрибуты html (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 Ответ

2 голосов
/ 19 мая 2011

Ну, вы нигде не используете свой htmlAttributes аргумент в функции.

Вам не нужно что-то вроде ...

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

Кроме того, вы не* Требуется символ @ перед атрибутами tabindex, maxlength и size.

...