2011-03-16 20 views
5

Mam duży widok, który wymaga logiki warunkowej, aby zdecydować, który fragment HTML ma być renderowany w środku widoku. Mam właściwość w moim modelu, która może mieć kilka różnych wartości, które określają wyjściowy HTML.Logika warunkowa w widoku mvc vs htmlhelper kontra akcja

Normalnie umieściłbym logikę warunkową w html helper, ale biorąc pod uwagę, że każde wyjście jest uczciwym kawałkiem html, nie jestem pewien, że ucieczka w nich w pliku C# byłaby świetna. Mogę również umieścić logikę w akcji i renderować różne poglądy, ale biorąc pod uwagę, że większość poglądów jest taka sama, to też nie wydaje się świetne. Pozostaje mi wiele zdań, jeśli moim zdaniem (lub częściowe?), Które również wydają się brzydkie (i oczywiście niewymierne).

Jaki jest najlepszy sposób na zrobienie tego?

(używam MVC3 w przypadku nie jest czymś nowym i Funky mogę używać!)

+0

Jeśli używasz Razor, spróbuj googlowania „pomocników Razor deklaratywna html” mogą spełnić swoją sytuację ... nie może. Ale ich nowy i funky ;-) – Charlino

Odpowiedz

3

I zazwyczaj umieścić oddzielne kawałki wizualnych własne częściowe. Następnie mój widok warunkowo wywołuje każdej części z Html.Partial. Zapewnia to główny widok z wzdęcia.

Ogólnie, staram się unikać plików Html.Helpers zawierających więcej niż jeden element.

Coś jak:

@if(Model.HasA) 
{ 
    @Html.Partial("widgetdetails-hasa") 
} 

@if(Model.HasB) 
{ 
    @Html.Partial("widgetdetails-hasb") 
} 
// etc 
+0

Zgadzam się - Pomocnicy HTML z więcej niż jednym elementem są nazywane Stronami części ;-) – richb01

4

IMHO logika jak to jest w porządku dla widoku:

@if (Model.ShouldShowSomeSection) 
{ 
    ... some large chunk of HTML 
} 
else 
{ 
    ... some alternative 
} 
Powiązane problemy