C'è una sintassi più bello quando la creazione di elementi con attributi sillabate invece di utilizzare:hyphenated attributi HTML con asp.net mvc
<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>
Guardando le specifiche HTML per gli standard proposti HTML 5 e WIA ARIA esso sembra che i trattini degli attributi HTML siano pianificati per essere più comuni come una sorta di semplice spaziatura dei nomi.
E.g. HTML 5 propone che gli attributi personalizzati siano prefissati con data-
e WIA ARIA utilizza il prefisso aria-
per tutti gli attributi ARIA WIA.
Quando si utilizzano helper HTML in ASP.NET MVC come <%= Html.TextBox("name", value, new { attribute = attributeValue }) %>
, l'oggetto anonimo viene convertito in un dizionario.
Sfortunatamente in C# non è supportato il trattino nei nomi, quindi l'unica alternativa è creare un dizionario. La sintassi per la quale è molto prolissa, qualcuno ha visto un'alternativa migliore o un modo semplice per alterare la funzionalità delle estensioni HTML di ASP.NET MVC senza dover riscrivere l'intera estensione?
+1 Mi ha appena salvato dallo scrivere un codice veramente brutto. Grazie! –
Ho trovato un problema analogo a molte domande di SO, e questa è la migliore risposta. – user2780436
Puoi aggiungere il motivo della tua affermazione ** i caratteri di sottolineatura non sono validi negli attributi html **. Almeno [html 4.01 afferma] (http://www.w3.org/TR/html401/intro/sgmltut.html#didx-attribute): _Il valore dell'attributo può contenere solo lettere (az e AZ), cifre (0- 9), trattini (ASCII decimale 45), punti (ASCII decimale 46), caratteri di sottolineatura (ASCII decimale 95) e due punti (ASCII decimale 58) _, – surfmuggle