Разница между анонимным классом и IDictionary для htmlAttributes в ASP.NET MVC?

Например, если вы проверите эти два метода расширения, единственное различие - это тип 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) , чтобы сделать анонимный объект словарем.

С моей точки зрения, представления лучше использовать анонимный объект. Что вы думаете, ребята? Есть ли недостатки в использовании анонимного объекта?

5
задан tereško 28 September 2013 в 14:40
поделиться