2012-02-08 9 views
19

Sto cercando di aggiungere ulteriori attributi dati-icon alla mia azione Link, ma sto ottenendo l'errore sotto:Dichiaratore membro di tipo anonimo non valido. membri tipo anonimo devono essere dichiarate con un incarico di membro, semplice nome o l'accesso membro

Dichiaratore membro di tipo anonimo non valido. I membri di tipo anonimo devono dichiarare con un'assegnazione membro, un nome semplice o un accesso membro.

Works:

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

Eccezione:

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

invece di 'utilizzo dei dati-icon' @' @ data_icon' – xandercoded

+0

dà la stessa eccezione – Eugene

risposta

24

UPDATE: Dal commento di Xander sopra, utilizzare data_icon = "gear"

Yo u possibile utilizzare un IDictionary<string, object> al posto dell'oggetto anonimo per attributi HTML:

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

Vedi questo sovraccarico: http://msdn.microsoft.com/en-us/library/dd504988.aspx

L'aiutante che si sta utilizzando è solo un metodo conveniente per creare il dizionario, ma dietro le quinte il dizionario è creato comunque.

+3

Quando faccio questo, rende il link come: 'Log Off' – xdumaine

+0

Ho avuto questo problema con un punto/punto nel mio parametro (un filtro di classe con un membro che volevo passare), ho trovato il seguente lavoro ... '@ Html.ActionLink (" Profilo "," Dettagli ", nuovo RouteValueDictionary {{" filter.member ", myvalue.ToString()}})' Spero che la formattazione funzioni, fondamentalmente utilizzare RouteValueDictionary anziché il tipo anonimo? – KeithFearnley

3

mi basta usare il seguente

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

che ho imparato da risposta di Jon in this post.

L'ho usato principalmente nei controller per fornire i valori del percorso per i metodi RedirectToAction(), ma non vedo perché non dovrebbe funzionare nella visualizzazione, è necessario aggiungere un @using System.Web.Routing;.

16

penso che si utilizza sottolineare come data_icon e lo traduce

Problemi correlati