2013-05-13 174 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 
}