Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC: Razor @helper vs extension methods to HtmlHelper - which is preferred?

The Razor view engine in ASP.NET MVC supports @helper to define little helper methods. It seems you can do much the same by adding extension methods to HtmlHelper. In what situations is it best to use each?

like image 925
Jake Petroules Avatar asked Jun 08 '11 22:06

Jake Petroules


2 Answers

Subjective question, so here's my subjective and biased answer: When the helper code involves amounts of C# code use a custom HtmlHelper and when it's primary markup you could use @helper. But assuming that when you have markup you could use a partial like @Html.Partial("_foo", SomeModel) or an editor/display templates like @Html.EditorFor(x => x.Foo), the @helper doesn't really have any practical use. Personally I've never used @helper by the way, and I've never recommended it's usage to people I've been consulting.

like image 51
Darin Dimitrov Avatar answered Sep 24 '22 01:09

Darin Dimitrov


Yes, that's true, though the @helpers seem a bit easier to work with if there's a good chunk of markup that's included--Html extensions and more extensive markup don't go that well together, IMO.

On the other hand, @helpers can't be unit tested like Html extensions.

like image 23
ataddeini Avatar answered Sep 25 '22 01:09

ataddeini