困惑于Html.AttributesFor(m => m.Name))

时间:2011-11-24 05:58:26

标签: asp.net-mvc asp.net-mvc-3

我正在尝试从别人的代码中学习。我看到了以下内容:

@Html.TextBoxFor(m => m.Name, Html.AttributesFor(m => m.Name))

有人可以向我解释Html.AttributesFor的工作原理吗?这些属性是什么,我可以在哪里设置它们。

更新:

我发现代码中隐藏了以下内容:

  public static IDictionary<string, object> AttributesFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)
        {
            var attributes = new RouteValueDictionary {{"class", ""}};

            WhenEncountering<StringLengthAttribute>(expression, att => attributes["maxlength"] = att.MaximumLength);
            WhenEncountering<HintSizeAttribute>(expression, att =>
                {
                    attributes["class"] += att.Size.ToString().ToLowerInvariant() + " ";
                });

            attributes["class"] = attributes["class"].ToString().Trim();
            return attributes;
        }

1 个答案:

答案 0 :(得分:1)

TextBoxFor帮助器有三个重载,没有人指定你发布的语法,可能是为了方便起见,有人编写的自定义助手。 Html.TextBoxFor的第二个参数采用html objectHtmlAttributes,您可以将其指定为

@Html.TextBoxFor(x=>x.name,new { @class="classname", @rel="nofollow" })

或需要IDictionat<string,object>htmlAttributes