2012-02-08 2 views
19

Я пытаюсь добавить дополнительный атрибут данных-значок к моей Action Link, но я получаю ошибку ниже:Недопустимый декларатор участника анонимного типа. Члены типа Анонимных должны быть объявлены с назначением членов, простым именем или доступом к члену

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

Работы:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 }, 
      new { @rel = "external", @id = "btnProfile" }) 

Исключение:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 }, 
      new { @rel = "external", @id = "btnProfile", @data-icon = "gear" }) 
+8

вместо '@ использование данных-icon'' @ data_icon' – xandercoded

+0

дает то же самое исключение – Eugene

ответ

24

UPDATE: Из комментария Ксандра выше, используйте data_icon = "gear"

Yo и можно использовать IDictionary<string, object> вместо анонимного объекта для HTML атрибуты:

@Html.ActionLink("Profile", "Details", "Profile", new { id = 11 } 
    , new Dictionary<string, object> 
    { 
     { "rel", "external" }, 
     { "id", "btnProfile" }, 
     { "data-icon", "gear" }, 
    }) 

Смотрите эту перегрузку: http://msdn.microsoft.com/en-us/library/dd504988.aspx

Помощник вы используете это просто удобный способ создания словаря, но за кулисами словарь в любом случае создается.

+3

Когда я делаю это, он делает ссылку, как: 'Log Off' – xdumaine

+0

У меня была эта проблема с периодом/точкой в ​​моем параметре (класс Filter с членом, который я хотел передать), я нашел следующее сработало ... '@ Html.ActionLink (« Профиль », Подробности ", новый RouteValueDictionary {{" filter.member ", myvalue.ToString()}})' Надеемся, что форматирование работает - в основном используйте RouteValueDictionary вместо анонимного типа? – KeithFearnley

3

Я просто использую следующие

@using System.Web.Routing 

@{ 
    RouteValueDictionary RouteValues = new RouteValueDictionary(); 

    RouteValues["id"] = 11; 
    RouteValues[Some_Name] = Some_Value; //do this with as many name/value pairs 
             //as you like 
} 

@Html.ActionLink("Link Text", "Action", "Controller", RouteValues) 

, который я узнал от ответа Джона в this post.

В основном я использовал это в своих контроллерах, чтобы указать значения маршрута для методов RedirectToAction(), но я не понимаю, почему он не должен работать на ваш взгляд, вам нужно будет добавить @using System.Web.Routing;.

16

Я думаю, что вы используете, как подчеркивают data_icon и переводит его

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