2015-05-12 17 views
6

Sto usando mvc5 in combinazione con il rasoio e riempisco il testo del sito web in modo dinamico in base alla lingua. Esempio:Punto etichetta punto rasoio

@Html.Label(@DDHelper.GetContent("user_name"), htmlAttributes: new { @class = "control-label col-md-3" }) 

@DDHelper.GetContent("user_name") restituisce una stringa, che viene impostato come testo dell'etichetta. quando @DDHelper.GetContent("user_name") restituisce "Ciao". l'etichetta non viene creata e la sorgente HTML è vuota.

Lo so perché @HTML.Label() non consente '.' e questa è la radice del mio problema e che dovrei usare @HTML.LabelFor() ma come posso usare @HTML.LabelFor() quando voglio solo visualizzare una stringa?

+0

provare con virgolette (') .. come' @ DDHelper.GetContent ("user_name") ' – Sachin

+1

Che ne dici di utilizzare un semplice 'Div'? - '

@DDHelper.GetContent("user_name")
'. Se vuoi puoi applicare altri stili se vuoi. – ramiramilu

+0

bella alternativa @ramiramilu – Sachin

risposta

9

Controllare i sovraccarichi per @ Html.Label, quello che si sta utilizzando è:

public static MvcHtmlString Label(this HtmlHelper html, 
            string expression, 
            object htmlAttributes) 

quello che si desidera è

public static MvcHtmlString Label(this HtmlHelper html, 
            string expression, 
            string labelText, 
            object htmlAttributes) 

C'è un malinteso comune di ciò che un HTML è label . Su Winforms, un'etichetta è il punto in cui inserisci del testo, non è questo il caso dell'HTML. In HTML, un <label> consente all'utente di fare clic sul testo e posizionare il cursore/la messa a fuoco sull'input corrispondente.

La sintassi completa per un'etichetta è:

<label for="controlName">caption</label> 

La parte 'espressione' nelle sovraccarichi sopra è la "a" parte in html - deve puntare a un nome di controllo.

Se questo è ciò che si sta cercando di fare (coppia un'etichetta con un controllo) quindi provare:

@Html.Label("user_name", 
      @DDHelper.GetContent("user_name"), 
      htmlAttributes: new { @class = "control-label col-md-3" }) 

Dove il vostro input è chiamato 'user_name'. È qui che viene in @Html.LabelFor, qualcosa come:

@Html.Labelfor(model=>model.UserName, 
       @DDHelper.GetContent("user_name"), 
       htmlAttributes: new { @class = "control-label col-md-3" }) 

in modo da fare i nomi dei campi non hard-code e refactoring.

Se si "desidera semplicemente visualizzare una stringa", probabilmente non si desidera uno <label>. Se avete solo bisogno di qualche semplice testo, non è necessario un nulla @Html e può solo uscita la traduzione:

<div class='control-label col-md-3'> 
    @DDHelper.GetContent("user_name") 
</div> 

ma come si sta utilizzando 'control-label' Ho il sospetto che si vuole <label>.

+0

Grazie, non posso immaginare ho trascurato! – Worst

0

Se Html.Label (..) non è un'opzione Io suggerirei un'alternativa:

<h4>@Html.Encode(@DDHelper.GetContent("user_name"))</h4> 

funzionato bene per me.

Problemi correlati