2009-10-07 19 views
6

W naszych standardowych formularzach ASP.NET formalizujemy zwykle zakres kontrolek użytkownika na stronie wzorcowej i ustalamy, czy wyświetlają się one w swoim kodzie. Jakie jest najlepsze podejście w ASP.NET MVC do osiągnięcia tego samego celu?Jak kontrolować wyświetlanie warunkowe widoków częściowych w ASP.NET MVC

Oczywiście można wstawić instrukcje na stronie wzorcowej lub częściowym, ale wydaje mi się to nieuporządkowane i łamie zasadę utrzymania logiki biznesowej z widoku. Wymaga to również umieszczenia niezbędnych informacji we wszystkich modelach widoków lub dziedziczenia po kontrolerze bazowym, który wydaje się dużo kłopotać czymś tak prostym.

Zastanawiam się nad użyciem funkcji RenderAction i zwróceniem całkowicie pustego widoku, aby zapobiec wynikom - czy to dobry wzór?

Odpowiedz

3

łamie zasadę zachowania logiki biznesowej z widoku

to nie jest logika biznesowa. Jest to logika prezentacji, gdy decydujesz, czy coś wyświetlić, czy nie. Można go tam mieć.

Możesz podjąć decyzję, czy wyświetlić coś, czy nie, i ustawić kilka flag w modelu (możesz na przykład użyć BaseModel lub MasterModel). Wtedy Twoje widoki główne, widoki częściowe lub pomocnicy HTML będą renderować warunkowo na podstawie tych flag.

Co do czystego rozdzielania spraw, tak, WebFormy mogły z pozoru robić to, ale była to raczej ogromna abstrakcja mechanizmów leżących u ich podstaw. Często powoduje to logikę biznesową w kodzie źródłowym, co oznacza, że ​​w warstwie prezentacji, w której logika biznesowa nie jest niczym więcej, niż należy do widoków.

+1

I drugi. Mam kilka wywołań "RenderPartialIfNotNull (" Foo ", Model.Something). –

+0

Przepraszam, tak, chodzi mi o logikę UI, a nie logikę biznesową –

Powiązane problemy