2013-04-17 12 views
6

W maszynce, czy miałem coś takiego:klas CSS Addind do razor elementy

@Html.EditorFor(model => model.name) lub nawet: @Html.CheckBoxFor(m => m.RememberMe)

Jak dodać klasę css lub identyfikator do nich? Czytałem o pomocnikach, ale czy musiałem zrobić pomocnika dla każdego elementu? czy nie ma łatwego sposobu dodawania klasy lub identyfikatora do elementów typu brzytwa?

Odpowiedz

7

Nie można tego zrobić z EditorFor pomocnika po prostu dlatego, że nie wiem co szablon zostanie użyty. Możesz to osiągnąć, ale będziesz musiał napisać niestandardowy szablon edytora. Na przykład można to osiągnąć przez przesłonięcie default editor template i biorąc pod uwagę drugi parametr, który reprezentuje dodatkowe dane widoku.

Oto przykład jak taki zwyczaj szablon redaktor może wyglądać w przypadku typów String (~/Views/Shared/EditorTemplates/string.cshtml):

@Html.TextBox(
    "", 
    ViewData.TemplateInfo.FormattedModelValue, 
    ViewData 
) 

a następnie można go używać tak:

@Html.EditorFor(model => model.name, new { @class = "myclass" }) 

Z pomocnika CheckBoxFor możesz to zrobić:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myclass" }) 
+0

Ah, nadszedł czas, aby przejść na emeryturę na dzisiaj? Jesteś teraz w tym miejscu :) Nie widzisz odpowiedzi dopóki nie opublikuję mojej. –

+0

@vonv., A jednak, to twoje, ale wznowione, nawet jeśli wysłana 2 minuty później :-) –

+0

Z tego posta na blogu, od jego wskazał na pracę MVC2 dla MVC 3? – TheWebs

0

Ponieważ EditorFor nie jest specyficzny dla typu, nie można z niego korzystać.

Dla CheckBoxFor, można użyć:

@Html.CheckBoxFor(m => m.RememberMe, new { @class = "myClass", id = "myID" }) 

Zanotować @ przed class bo to zarezerwowane słów kluczowych w języku C#

+0

Nie będzie działać z programem EditorFor. Drugi argument nie robi tego, co większość ludzi uważa. –

+0

@DarinDimitrov Dobry krzyk, zaktualizowany. – mattytommo

3

To proste dla CheckboxFor, c zrobić to tak:

@Html.CheckBoxFor(m => m.RememberMe, new { @class="your_class", @id="the_id" }) 

Jest to nieco trudniejsze ze EditorFor ponieważ nie jest obsługiwany po wyjęciu z pudełka. Mam na myśli to, że możesz stworzyć szablon dla każdego typu, a następnie dodać TextBoxFor, dodając atrybuty html (ta sama składnia co w CheckBoxFor). Być może będziesz musiał to zrobić dla każdego obsługiwanego typu.