I just read this blog post on Razor Templating in ASP.NET MVC 3.
Put simply, i just dont get it!
That is, i don't see why we need this (fairly) complicated code to achieve what can be done IMO easier (and neater) with @RenderPartial
?
Here's what i don't like:
Func<T,HelperResult>
delegate?The only "benefit" i read from that blog is that a seperate file isn't required for templating, meaning you don't need to re-compile etc.
But i don't see that as a valid argument. Extra files are fine as long as the solution organization isn't compromised.
I prefer using @RenderPartial
, as i can keep my markup seperate from the master view, and i can render this both inline (render time) and with jQuery (e.g AJAX event).
Maybe i'm missing something here, but can anyone give some reasons why we should choose Razor Templating over RenderPartial to create re-usable content?
Well, you should ask the author of that post about his motivation for presenting this technique.
It certainly illustrates what is possible in Razor. Whether you should use it is a different matter. I personally think that there are alternative techniques that are less complicated (I agree with your points about storing a Func
inside of the request context).
@RenderPartial
which you already mentioned.@helper
syntax (either as a local helper or a global helper)TagBuilder
to assemble the output)Now that I look at the above list I think MVC might provide too much choice :)
Update To better illustrate how inline templates can be useful I wrote a blog post about using them to call sections with default code: Optional Razor Sections with Default Content.
You can use it to write something like this:
@this.RenderSection("OptionalSection", @<div>Default Content</div>)