Domanda

Sto usando ASP.NET MVC con JQueryMobile in una web app. Voglio generare un link:

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>

Ho un metodo di estensione di supporto che mi permette di fare:

<%= Html.ActionLink<WhateverController>(c => c.Previous(), 
         "Previous", 
         new { data-role = "button", data-icon="arrow-l" } ) %>

Ad eccezione data-role e data-icon non sono validi come nomi di proprietà in C #. Utilizzando @data-role non funziona neanche.

C'è qualche sintassi per ovviare a questo? O sono bloccato con la creazione di un aiutante più specializzato che conosce i nomi degli attributi corretta.

È stato utile?

Soluzione

Si dovrebbe essere in grado di utilizzare IDictionary<string, object> anziché l'oggetto anonimo:

Html.ActionLink<WhateverController>(c => c.Previous(), 
     "Previous", 
     new Dictionary<string, object>
     {
          { "data-role", "button" },
          { "data-icon", "arrow-l"}
     })

Altri suggerimenti

Oltre alla risposta di svick, abbiamo fatto un cambiamento ordinata in ASP.NET MVC 3 dove le proprietà che hanno un carattere di sottolineatura in esse avranno automaticamente le sottolineature convertiti in trattini.

Quindi, se si dispone di codice in questo modo:

<%= Html.ActionLink<WhateverController>(c => c.Previous(),  
     "Previous",  
     new { data_role = "button", data_icon="arrow-l") %> 

Si renderà il markup con trattini:

<a href="/Whatever/Previous" data-role="button" data-icon="arrow-l">Previous</a>  

Perché questo personaggio è anche la sottrazione / operatore unario non è possibile utilizzare in un identificatore. Credo che il metodo di supporto personalizzato è probabilmente la soluzione migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top