ASP.NET MVC: Razor @helper или методы расширения для HtmlHelper - что предпочтительнее?

Механизм представления Razor в ASP.NET MVC поддерживает @helper для определения небольших вспомогательных методов. Кажется, вы можете сделать то же самое, добавив методы расширения в HtmlHelper. В каких ситуациях лучше всего использовать каждый?


person Jake Petroules    schedule 08.06.2011    source источник


Ответы (2)


Субъективный вопрос, поэтому вот мой субъективный и предвзятый ответ: когда вспомогательный код включает в себя количество кода C #, используйте собственный HtmlHelper, а когда это основная разметка, вы можете использовать @helper. Но если предположить, что, когда у вас есть разметка, вы можете использовать частичное, например @Html.Partial("_foo", SomeModel), или шаблоны редактора / отображения, такие как @Html.EditorFor(x => x.Foo), @helper на самом деле не имеет никакого практического применения. Лично я, кстати, никогда не использовал @helper и никогда не рекомендовал его использование людям, с которыми я консультировался.

person Darin Dimitrov    schedule 08.06.2011
comment
Это было моей мыслью, особенно когда это был пример weblogs.asp.net/scottgu/archive/2011/05/12/ для DisplayPrice, я думаю, что этот тип кода подходит лучше всего для. Практически полностью лишенный логики код, влияющий только на представление. Аналогично было бы сделать ваши взгляды СУХИМИ. - person Chris Marisic; 09.06.2011
comment
Если движок представления изменяется, нам не нужно переписывать вспомогательные методы в .cs, но декларативно (.cshtml) мы должны это делать. - person Mangesh Pimpalkar; 21.06.2011

Да, это правда, хотя с @helpers кажется немного проще работать, если в него включен хороший кусок разметки - расширения Html и более обширная разметка не очень хорошо сочетаются, IMO.

С другой стороны, @helpers нельзя тестировать, как расширения Html.

person ataddeini    schedule 08.06.2011