2015-05-12 11 views
6

Używam mvc5 w połączeniu z tekstem strony brzytwy i wypełnienia dynamicznie w oparciu o język. Przykład:Razor label dot period

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

@DDHelper.GetContent("user_name") zwraca ciąg znaków, który jest ustawiony jako tekst etykiet. gdy @DDHelper.GetContent("user_name") zwraca "Hello". etykieta nie jest tworzona, a źródło html jest puste.

Wiem, że to dlatego, że @HTML.Label() nie pozwala na "." i to jest główny przyczynek mojego problemu i powinienem użyć @HTML.LabelFor(), ale jak mogę użyć @HTML.LabelFor(), gdy chcę tylko wyświetlić ciąg?

+0

spróbuj z cudzysłowami (") .. jak" @ DDHelper.GetContent ("nazwa_użytkownika") ' – Sachin

+1

Co powiesz na użycie prostego 'Div'? - '

@DDHelper.GetContent("user_name")
'. Jeśli chcesz, możesz zastosować inne style, jeśli chcesz. – ramiramilu

+0

ładna alternatywa @ramiramilu – Sachin

Odpowiedz

9

sprawdzić przeciążeń dla @ Html.Label, jeden używasz to:

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

jeden chcesz to

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

Istnieje powszechne niezrozumienie czym jest HTML label . W winformach etykieta jest miejscem, gdzie umieszczasz tekst - tak nie jest w HTML. W HTML-ie <label> jest umożliwienie użytkownikowi kliknięcia twojego tekstu i ustawienie fokusa/kursora na odpowiednie wejście.

Pełna składnia etykiety jest:

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

do „wyrażenie” część w przeciążeniami powyżej jest „za” udział w html - musi wskazywać nazwę sterowania.

Jeśli to jest to, co staramy się robić (para etykietę z kontroli), a następnie spróbuj:

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

Jeżeli Twój wkład jest o nazwie „nazwa_użytkownika”. To gdzie @Html.LabelFor przychodzi, coś jak:

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

tak robisz nazwy pól nie trudno kodu i byłaby.

Jeśli "chcesz wyświetlić ciąg znaków", prawdopodobnie nie chcesz uzyskać wartości <label>. Jeśli wystarczy jakiś prosty tekst, nie trzeba się niczego @Html a może po prostu wyjście tłumaczenie:

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

ale jak używasz „control-label” Podejrzewam, że chce <label>.

+0

Dzięki, nie mogę sobie wyobrazić, że przeoczyłem! – Worst

0

Jeśli Html.Label (..) nie jest opcją, którą proponujemy alternatywę:

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

pracował dobrze dla mnie.