Tak więc tytuł powinien mówić sam za siebie.
Aby utworzyć komponenty wielokrotnego użytku w ASP.NET MVC, mamy 3 opcje (mogą to być inne, o których nie wspomniałem):
Częściowy widok:
@Html.Partial(Model.Foo, "SomePartial")
Szablon edytora niestandardowego:
@Html.EditorFor(model => model.Foo)
Niestandardowy szablon wyświetlania:
@Html.DisplayFor(model => model.Foo)
Pod względem faktycznego widoku / HTML wszystkie trzy implementacje są identyczne:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Więc moje pytanie brzmi - kiedy / jak decydujesz, którego z trzech użyć?
To, czego naprawdę szukam, to lista pytań, które należy sobie zadać przed utworzeniem jednego, na które odpowiedzi można użyć, aby zdecydować, który szablon użyć.
Oto 2 rzeczy, które znalazłem lepiej dzięki EditorFor / DisplayFor:
Przestrzegają hierarchii modeli podczas renderowania pomocników HTML (np. Jeśli masz model „Bar” w modelu „Foo”, elementy HTML dla „Bar” będą renderowane z „Foo.Bar.ElementName”, podczas gdy część będzie miała „ ElementName ”).
Bardziej solidny, np. Jeśli masz
List<T>
coś w ViewModel, możesz użyć@Html.DisplayFor(model => model.CollectionOfFoo)
, a MVC jest wystarczająco inteligentny, aby zobaczyć, że jest to kolekcja i renderować pojedynczy wyświetlacz dla każdego elementu (w przeciwieństwie do częściowego, który wymagałby jawnego wyrażenia dla pętla).
Słyszałem również, że DisplayFor renderuje szablon „tylko do odczytu”, ale nie rozumiem tego - czy nie mogę tam wrzucić formularza?
Czy ktoś może mi powiedzieć inne powody? Czy jest gdzieś lista / artykuł porównujący te trzy?