【问题标题】:Access variables from partial in WebMatrix 2从 WebMatrix 2 中的部分访问变量
【发布时间】:2012-08-18 18:29:43
【问题描述】:

很简单我怎样才能从部分传递到施工页面:

_SiteLayout.cshtml

@{PageData["phoneNumber"]="072342342343";}

Page.cshtml

 please call us on @PageData["phoneNumber"]

我试过这样的事情。我错过了什么明显的步骤?

它带来了空白。

【问题讨论】:

    标签: asp.net webmatrix webmatrix-2


    【解决方案1】:

    尝试为此使用 Session:

    Session["phoneNumber"]="072342342343"
    
    @Session["phoneNumber"]
    

    【讨论】:

    • 感谢您成功了。请问你有文档页面链接吗,我找不到。我想了解更多。
    • 我会将这个问题留给更多答案,因为无论如何我都必须等待 23 小时才能获得赏金。但是您的答案似乎很理想。并且不使用 cookie(?) 或其他 hack-arounds。它似乎比我想象的更全球化。与在页面级别访问的变量相反,它在会话级别。或者也许我想错了。无论如何它有效,并且稳定(?)所以谢谢。期待赏金很快。 :)
    【解决方案2】:

    您也可以使用HttpContext.Items 集合。它的工作原理与Session 大致相同,但集合仅在请求期间保持活动状态。不过,我不确定如何使用 Razor 最轻松地访问它。阅读有关 HttpContext.Items 的更多信息here

    【讨论】:

    • 这就是我所期望的每页类型的东西,你基本上是在一个请求的部分之间传递信息,而不是在请求之间传递信息。我想我曾经尝试过。我会在一段时间内测试它并回复你。 :)
    • 使用HttpContext.Current.Items["test"] 不行。我只是得到空白。
    • @Doomsknight 我一般不太熟悉 Web Matrix 或 cshtml。我认为问题与页面处理中的事件顺序有关。我相信页面是在布局页面设置值之前处理的。这可以解释为什么 PageDataHttpContext.Current.Items 都无法提供您想要的数据。这也意味着基于Session 的解决方案可能在第一次请求时失败。抱歉,我无法提供更多帮助...
    • 是的。让它反转很容易,因为您可以创建一个普通参数。我认为这可能是一个问题,需要检查这个第一个请求概念。不用担心。 +1 尝试:) 编辑:您对第一个请求绝对正确。嗯。 - 我想知道我是否应该把它放在 webconfig 文件中。并从那里阅读。
    • @Doomsknight 如果这样做的唯一原因是让电话号码在所有页面上都可用,那么 Web 配置 AppSettings 条目将符合要求。或者您可以在应用程序启动时将其存储在 Application 范围内(假设 WebMatrix 中有 Global.asax 或类似的东西),然后在需要它的所有不同页面中从那里获取它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多