Come posso aggiungere un attributo class a un elemento HTML generato da aiutanti HTML di MVC?

StackOverflow https://stackoverflow.com/questions/879266

  •  22-08-2019
  •  | 
  •  

Domanda

ASP.NET MVC in grado di generare gli elementi HTML utilizzando HTML Helpers, per esempio @Html.ActionLink(), @Html.BeginForm() e così via.

So che posso specificare gli attributi della forma creando un oggetto anonimo e passare tale oggetto per la (quarta in questo caso) parametro htmlAttributes dove specificando un id per l'elemento:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})

Ma per quanto riguarda l'attributo class? Ovviamente questo non funziona:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})

Come che getta solo errori di sintassi casuale quando viene richiesta mio punto di vista, perché si aspetta qualcosa di diverso dopo l'incontro con il C # parola chiave class.

Ho anche provato:

new { _class = "myclass"}

e

new { class_ = "myclass"}

Ma essi, inoltre, non ha funzionato, come il sottolineature vengono sostituiti da trattini .

So che posso altrettanto bene scrivere gli elementi HTML a mano o avvolgere il modulo all'interno di un <div class="myClass">, ma sarei ancora interessato a sapere come dovrebbe essere fatto.

È stato utile?

Soluzione

Al fine di creare un tipo anonimo (o qualsiasi tipo) con una proprietà che ha una riservata parola chiave come il suo nome in C #, è possibile anteporre il nome della proprietà con una chiocciola, @:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})

Per VB.NET questa sintassi sarebbe realizzato utilizzando il punto, ., che in quella lingua è la sintassi predefinita per tutti tipi anonimi :

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })

Altri suggerimenti

migliori prassi attuale in fase di sviluppo CSS è quello di creare selettori più generali con modificatori che possono essere applicati nel modo più ampio possibile in tutto il sito web. Vorrei cercare di evitare di definire stili separati per i singoli elementi della pagina.

Se lo scopo della classe CSS sull'elemento <form/> è quello di controllare lo stile degli elementi all'interno del modulo, si potrebbe aggiungere l'attributo class dell'elemento <fieldset/> esistente che incapsula qualsiasi forma di default in pagine web generate da ASP.NET MVC . Una classe CSS nel modulo è raramente necessaria.

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