2013-05-13 17 views
0

在使用webmatrix(剃刀模板,c#代碼)創建的ASP.NET Web Pages'站點'中。在編譯時從cshtml設置全局變量頁面

我可以在cshtml模板中設置一個「全局」(AppState)而不執行該頁面的變量嗎?

我知道我可以在頁面上設置「AppState.Whatever =」,但我必須'訪問'頁面,以便代碼'運行'。

我可以在te cshtml模板中設置「Something.Whatever =」,而無需訪問模板。 這隻有在這些頁面在保存時被「編譯」或解釋時纔有可能。 這樣的事情可能嗎?

謝謝!

+0

我不知道這樣做的目的是。當頁面未被訪問時,爲什麼你需要設置變量? – NotMe 2013-05-13 20:27:02

+0

http://www.asp.net/web-pages/tutorials/working-with-pages/18-customizing-site-wide-behavior – SLaks 2013-05-13 20:27:04

回答

1

您可以將名爲_AppStart.cshtml的文件添加到您網站的根目錄。當你的應用程序發出第一個請求時它會執行。你可以在其中設置全局變量。

尋找在這裏我的文章標題爲應用程序變量:http://www.mikesdotnetting.com/Article/192/Transferring-Data-Between-ASP.NET-Web-Pages

+0

用例如下:當我添加一個新頁面(cshtml)到我的網站。我想將此頁面自動添加到我的「菜單」中,而無需編輯任何其他頁面,然後再編輯新的cshtml頁面。只需添加一個頁面,它就會顯示在菜單中,而不是「執行」。那麼如何在不編輯_Appstart.chtml的情況下做到這一點? – Tixiv 2013-05-14 06:36:02

+0

我從來不會在你的問題的一百萬年中猜出你想要做什麼。您可以編寫一些列出您網站中文件的代碼,並根據結果生成一個菜單。如果你添加一個頁面,它會自動被代碼拾取。 – 2013-05-14 08:44:51

+0

所以沒有可能的辦法這可以工作?除了Directory.GetFiles? – Tixiv 2013-05-14 09:16:11

1

你不能設置你作爲全局變量_AppStart.cshtml。它不會將變量編譯到所有頁面。您可以嘗試將以下內容添加到_AppStart.cshtml,但它只能將整數添加或編譯到cshtml網站的所有頁面。

App.MyInt = 0;

但是,您可以添加一個名爲Global.cs文件App_Code文件夾

using System; 
using System.Collections.Generic; 
using System.Web; 

/// <summary> 
/// This class specifies global variables 
/// </summary> 
public static class Global 
{ 
    public const string StringName = "Some String"; 
    public const int IntName = 100; 
    // Or anything else you want to add 
}