我正在使用MVC 3附带的新Razor引擎构建一个站点(并且喜欢新的语法!).但是,我对使用公共属性/常量感到茫然.我知道使用WebForms我们可以在代码后面添加一个公共属性:
public string ImageFolder { get; set; }
我想在我的视图可以访问的一个全局位置定义重要变量,从CSS文件和图像的路径开始:
@{ Layout = "~/Views/Shared/_Layout.cshtml"; var ContentFolder = "~/Content"; var CssFolder = ContentFolder + "/Stylesheets"; var ImageFolder = ContentFolder + "/Images"; }
我已经尝试将上面的代码块放在_Layout中,以及_ViewStart中.但是,从子视图访问它们失败了.我想过在上面的代码块中定义一个公共属性但是它没有编译.
解决方案?
>就我所见,没有人使用Razor背后的代码.
>我想我应该能够从默认视图继承并在那里定义我的属性(如described on Stack).
但我强烈希望应该有一个更简单的方法来做这么简单的事情?
解决方法
您可以创建一个文件夹“App_Code”并创建一个文件“GlobalVal.cshtml”.
bellow是文件中的示例代码:
@functions{ public static readonly string __siteHome = "http://www.example.com"; public static readonly string __siteResource = "http://resource.example.com"; }
和波纹管是一个使用它的样本:
<a href="@GlobalVal.__siteHome/home/index">@GlobalVal.__siteHome</a>