2013-08-06 3 views

ответ

5

Внутри страницы (с использованием синтаксиса бритвы):

@Html.DropDownForEnum(typeof(enumToDropDown), name: "Foo", optionLable: "Bar", htmlAttributes: null) 
+0

Спасибо, что дали мне прямой ответ без трещин. – bman

1

Это метод расширения на HtmlHelper. Как это так, то следует назвать так:

HtmlHelper<TModel> instance = new HtmlHelper<TModel>(); 
instance.DropdownForEnum(type, name, optionLabel, htmlAttributes) 

где TModel тип присваивается общий на момент объявления.

Смотрите также вопрос: MVC3 Razor DropDownListFor Enums

о методах расширения см это: http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx

1

Это extension метод на HtmlHelper. Вы можете узнать больше об этом here.

Вы можете назвать это LKE это

yourhtmlHelperObject.DropdownForEnum(someType,someName,label,attributes); 
2

«это» часть аргументов указывает мне, что это «метод расширения» - в основном вспомогательный метод, который делает некоторые общественные операции на объекте, но можно назвать так, как будто это метод этого объекта.

HtmlHelper<Model> helper; 
Type type; 
String name; 
String optionLabel; 
Object htmlAttributes; 

helper.DropdownForEnum(type, name, optionLabel, htmlAttributes); 
// or, the standard way for calling a static: 
NameOfClassWhereYouFoundMethod.DropdownForEnum(helper, type, name, optionLabel, htmlAttributes); 
+0

, за исключением того, что функция имеет статическое объявление, поэтому она не будет вызвана в экземпляр HtmlHelper. –

+0

@MikeCorcoran Все методы расширения объявляются статически, потому что экземпляр HtmlHelper указан как аргумент. (это HtmlHelper ...) – Katana314

+0

ugh, brainfart. вы правы, я думал, что только декларация внешнего класса должна быть статической –

Смежные вопросы