I have functions in my view that is shared by several pages:
@functions
{
public HtmlString ModeImage(ModeEnum mode)
{
switch(mode)
{
You could make a static helper page and put a normal static
method in the page.
You could then call it by writing PageName.MyMethod()
anywhere, and I believe that you won't need to recompile the project.
(Here's a more detailed version of the existing answers.)
Create a folder called App_Code
in the root of the MVC project if it doesn't already exist. In here, create an empty razor view and name it whatever you want:
Add @helper
s and/or static
methods to it as needed:
@helper ShowSomething()
{
<span>Something</span>
}
@functions
{
public static int CalculateSomething()
{
return 1;
}
}
Then use them from your views by first accessing the shared view by name:
@Shared.ShowSomething()
@Shared.CalculateSomething()
This sounds like you want the Razor @helper methods described in the blog post ASP.NET MVC3 and the @helper syntax within Razor by Scott Guthrie.
Here is the overview... "The @helper syntax within Razor enables you to easily create re-usable helper methods that can encapsulate output functionality within your view templates. They enable better code reuse, and can also facilitate more readable code."