例如,如果您检查这两个扩展方法,唯一的区别是 htmlAttributes 的类型,因此您可以通过两种不同的方式传递您的 htmlAttributes:
public static MvcHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
IDictionary<string, object> htmlAttributes);
public static MvcHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression,
object htmlAttributes);
并以下列任何一种方式使用它们:
@Html.TextBoxFor(model => model.TagLine,
new { @placeholder = "We live to make art." })
@Html.TextBoxFor(model => model.TagLine,
new Dictionary<string, object> {
{ "placeholder", "We live to make art." } })
我检查了 MVC 源代码,我知道它们在后台使用相同的方法,但是接受匿名对象的方法HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)
用于使匿名对象成为字典。
在我看来,视图使用匿名对象更干净。你们觉得怎么样?使用匿名对象有什么缺点吗?