gpt4 book ai didi

global-variables - MVC 3 Razor _ViewStart 中的公共(public)变量

转载 作者:行者123 更新时间:2023-12-04 07:23:57 26 4
gpt4 key购买 nike

我正在 MVC 3 附带的新 Razor 引擎上构建一个站点(并且喜欢新语法!)。但是,我对使用公共(public)属性/常量感到茫然。我知道使用 WebForms 我们可以在后面的代码中添加一个公共(public)属性:

public string ImageFolder { get; set; }

我想在我的 View 可以访问的一个全局位置定义重要变量,从 CSS 文件和图像的路径开始:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
var ContentFolder = "~/Content";
var CssFolder = ContentFolder + "/Stylesheets";
var ImageFolder = ContentFolder + "/Images";
}

我试过把上面的代码块放在 _Layout ,以及内部 _ViewStart .但是,从 subview 访问它们会惨遭失败。我想在上面的代码块中定义一个公共(public)属性,但它没有编译。

解决方案?
  • 据我所知,没有人在 Razor 中使用代码。
  • 我想我应该能够从默认 View 继承并在那里定义我的属性(如 described on Stack )。

  • 但我强烈希望应该有一种更简单的方法来做这么简单的事情?

    最佳答案

    我决定走另一条路,并扩展 UrlHelper 以提供我认为我可能需要的所有三个文件夹的路径:

    public static class ExtensionMethods
    {
    private const string ImagesFolder = "~/Images";
    private const string StylesheetsFolder = "~/Stylesheets";
    private const string ScriptsFolder = "~/Scripts";

    public static string Images(this UrlHelper url)
    {
    return url.Content(ImagesFolder);
    }

    public static string Stylesheets(this UrlHelper url)
    {
    return url.Content(StylesheetsFolder);
    }

    public static string Scripts(this UrlHelper url)
    {
    return url.Content(ScriptsFolder);
    }
    }

    一切顺利...几乎 :-) 我现在想知道是否有一个地方可以定义 using MyNamespace.Helper为了使这些扩展方法在应用程序范围内可用,声明将继续。在过去,我们会在 web.config 中添加一个条目:
    <system.web>
    <pages>
    <namespaces>
    <add namespace="MyNamespace.Helper"/>
    </namespaces>
    </pages>
    </system.web>

    这似乎不适用于 Razor :-( 我尝试在 _ViewStart.cshtml 中添加 using 语句,但也没有运气 - 我的扩展方法可见的唯一方法是在特定页面上添加 using 语句,这又是不理想。

    有什么建议么?你们中有人看过 Razor 的页面解析和交付顺序的解释吗?

    关于global-variables - MVC 3 Razor _ViewStart 中的公共(public)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291381/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com