c# - razor語法 - 共享MVC Razor在多個視圖中起作用




cshtml教學 (2)

我的視圖中有多個頁面共享的函數:

@functions 
{
    public HtmlString ModeImage(ModeEnum mode) 
    {
        switch(mode)
        {
            case AMode: new HtmlString("<img etc..."); break;
            // more etc...
        }
    }
}

有沒有辦法將它放在一個單獨的文件中,並將其包含在每個頁面上,而無需將其複制並粘貼到每個頁面。 我知道我可以編寫.cs文件並在每頁訪問它,但該函數確實涉及視圖,如果此函數發生更改,我不想重新編譯。

https://code.i-harness.com


(這是現有答案的更詳細版本。)

如果MVC項目的根目錄中尚不存在,則在MVC項目的根目錄中創建一個名為App_Code的文件夾。 在這裡,創建一個空的剃刀視圖,並將其命名為您想要的任何內容:

根據需要為其添加@helper和/或static方法:

@helper ShowSomething()
{
    <span>Something</span>
}

@functions
{
    public static int CalculateSomething()
    {
        return 1;
    }
}

然後,首先按名稱訪問共享視圖,從視圖中使用它們:

@Shared.ShowSomething()
@Shared.CalculateSomething()

您可以創建一個靜態幫助頁面並在頁面中放置一個普通的static方法。
然後你可以通過在任何地方編寫PageName.MyMethod()調用它,我相信你不需要重新編譯項目。





razor