ASP.NET MVC - передать htmlAttributes в качестве параметра - PullRequest
2 голосов
/ 06 июня 2011

Я хочу передать htmlAttributes в качестве параметра моему HtmlHelper, как это было создано в Html.ActionLink ("linktext", "Home", null, new {width = "100px"} ) Как передатьэтот новый {width = "100px"} для моего метода

    public static string SelectCategoryAdminWithAllItem(this HtmlHelper htmlHelper, string name, **???**)
    { }

и как его проанализировать?

Спасибо

Ответы [ 2 ]

5 голосов
/ 06 июня 2011

Всегда старайтесь заглянуть в источники, если вас интересуют такие вопросы.Как видно из реализации HtmlHelper.TextBox

public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes)
{
    return htmlHelper.TextBox(name, value, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
}

, тип параметра - object, поскольку вы не можете использовать анонимные типы в качестве параметров для методов, а object - выбор.А при разборе вы можете использовать HtmlHelper.AnonymousObjectToHtmlAttributes Method

3 голосов
/ 06 июня 2011

Я искал источник для MVC2, пытаясь выяснить это. В MVC2 они использовали перегрузку RouteValueDictionary в System.Web.Routing, чтобы превратить объект в словарь, вместо того, чтобы использовать вспомогательный метод, как в MVC3.

public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes)
{
    return htmlHelper.TextBox(name, value, new RouteValueDictionary(htmlAttributes));
}

Немного интуитивно понятно, но это стандарт 2. 2. 1004 *

Редактировать: обновлены теги для включения mvc2

...