Dzięki RazorViewEngine mogę to zrobić:
if (somecondition) {
<div> some stuff </div>
}
ale wydaje mi się, że nie mogę tego zrobić (Razor jest zdezorientowany):
if (somecondition) {
<div>
}
if (someothercondition) {
</div>
}
Mam sytuację, w której muszę umieścić otwierające i zamykające tagi html w różnych blokach kodu - jak mogę to zrobić w Razor?
asp.net-mvc-3
razor
sydneyos
źródło
źródło
<text><div></text>
- haacked.com/archive/2011/01/06/…<text><div></text>
działa, ale<text></div></text>
nie działa.Aby wyjaśnić odpowiedź Darina, tj. Przedrostek kodu HTML w następujący sposób:
@: w Razor oznacza „renderuj coś jako zwykły tekst”
lub możesz użyć tego, co wyprowadza kod HTML tak, jak go pierwotnie napisałeś (można to również użyć, aby uniknąć automatycznego kodowania HTML, które robi Razor, jeśli próbujesz wyprowadzić HTML):
(Dokumentacja Html.Raw z MS - http://msdn.microsoft.com/en-us/library/gg568896(v=vs.111).aspx )
źródło
@:<a href="@link" class="@classNames">@text</a>
@Html.Raw()
- zobacz powiązany post SOMożesz utworzyć niestandardową metodę pomocnika MVC. Z utworzeniem publicznej klasy statycznej MyRenderHelpers w przestrzeni nazw
System.Web.Mvc.Html
i napisz metodę Html.Teraz możesz użyć tej metody rozszerzenia w widoku brzytwy:
źródło
Fakt, że musisz to zrobić, zwykle wskazuje, że kod widoku nie jest poprawnie rozłożony na czynniki. Istotą HTML jest posiadanie zrównoważonych lub samozamykających się tagów (przynajmniej w HTML 4 wydaje się, że HTML 5 odchyla się od niego) i Razor opiera się na tym założeniu. Jeśli zamierzasz warunkowo usunąć a,
<div>
wtedy też gdzieś później wyjdziesz</div>
. Po prostu umieść parę whoel w swoimif
wyciągu:W przeciwnym razie otrzymasz dziwny kod, taki jak tutaj .
źródło
@:
lub<text></text>
if (somecondition) { @:</div> }
<link>
tagów.