Question

In asp.net webpages framework what is the difference between using a content block versus a helper?

They both seem to be used to output HTML to multiple pages. They both can contain code and both can pass parameters.

Are there other differences? When should you use a helper versus a content block?

More info:

With Content Blocks we create a .cshtml (for example _MakeNote.cshtml) file to hold the content we want to insert into a page. Then we use:

@RenderPage("/Shared/_MakeNote.cshtml") 

to insert the content into a page. We can pass parameters to the content block like this:

@RenderPage("/Shared/_MakeNote.cshtml", new { content = "hello from content block" })

It's somewhat like an include file, but I think does not share scope with the parent page.

With Helpers we create a .cshtml page in the App_Code folder (for example MyHelpers.cshtml) and place methods in that page which we want to call. The method looks something like this:

@helper MakeNote(string content) {
    <div>@content</div>
}

The helper is called by using:

@MyHelpers.MakeNote("Hello from helper")
Was it helpful?

Solution

There isn't a lot of difference functionally. Helpers need to go into an App_Code folder - unless you download VWD or Visual C# Express and compile a binary - and the App_Code folder doesn't translate well to the MVC framework. Of course, that's only relevant if you want to upgrade to MVC at some point.

I would use a helper for generic functional snippets like your MakeNote. I would use a "content-block" (partial, really) for repeated site-specific sections of a page.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top