Неверный анонимный член объявления типа.Члены анонимного типа должны быть объявлены с назначением члена, простым именем или доступом члена - PullRequest
20 голосов
/ 08 февраля 2012

Я пытаюсь добавить дополнительный атрибут data-icon к моей ссылке Action, но я получаю сообщение об ошибке ниже:

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

Работает:

@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" })

Ответы [ 3 ]

25 голосов
/ 24 февраля 2012

ОБНОВЛЕНИЕ: Из приведенного выше комментария Ксандера используйте data_icon = "gear"

Вы можете использовать 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

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

17 голосов
/ 24 июня 2013

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

3 голосов
/ 10 июля 2012

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

@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)

, который я узнал из ответа Джона в этом посте .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...