【问题标题】:Webmatrix 2: Storing static valuesWebmatrix 2:存储静态值
【发布时间】:2012-09-04 12:52:43
【问题描述】:

哪里是存储静态值的最佳位置。 我将如何访问它。

我希望能够从任何页面访问静态值。但只需在一个地方定义它们。

例如“电子邮件”和“电话号码”

我尝试过SessionPageData 之类的方法,并在我的标题中定义变量(所有页面都使用),但这不起作用。

部分是在页面之后初始化的,所以它要么根本不起作用,要么在第一次加载时不起作用。

例如第一次加载:

页面加载

标题部分加载

结果。页面显示变量。

我已经考虑将它存储在配置文件中。但我不知道如何从 Webmatrix 2 访问它。 我可以只创建一个 txt/ini 文件或其他东西,但解析文件肯定不是最好的方法。 - 我已经尝试过这个,它似乎不像在 mvc3 (config) 中那样有效,而且每个请求都无法读取 txt 文件。

【问题讨论】:

    标签: asp.net webmatrix webmatrix-2


    【解决方案1】:

    对于“静态”,如果您的意思是在应用程序的生命周期内不会改变的值,您通常会使用HelperPage.App property 进行存储。它基于dynamic 类型,因此您可以创建任意属性:

    App.Email = "someone@somewhere.com"; 
    

    或者您可以使用更传统的名称/值收集方法与AppState

    AppState["email"] = "someone@somewhere.com";
    

    但是,如果您的“静态”变量是特定于用户的,则应使用 Session,因为它的作用域仅限于用户。或者,如果您想永久存储它们,请使用数据库。

    您可以在 _PageStart.cshtml(可能需要创建)或 global.asax 文件的 Session_Start 事件中设置会话值,然后在您想要的任何部分/视图中访问它们。

    【讨论】:

    • 这与会话有何不同
    • 会话变量的范围是用户。 AppState 变量的范围是应用程序。请参阅我对答案所做的修改
    • 我将把它放在哪里,以便我可以从每个页面访问它。请注意,部分在页面之后初始化,因此session 无法在第一次加载时出现问题。
    • 您可以在 _PageStart.cshtml 中设置会话值,也可以在 global.asax 文件的 Session_Start 事件中设置会话值
    • 如果 _PageStart 你的意思是 _siteLayout 它是部分的......并且没有 Global.asax 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2016-10-02
    • 2019-07-05
    • 2011-04-12
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多