【问题标题】:How to declare a global variable in ASP.NET MVC page如何在 ASP.NET MVC 页面中声明一个全局变量
【发布时间】:2010-06-04 13:26:49
【问题描述】:

我最近开始使用 asp.net mvc,但遇到了问题。 我有一个呈现几个 ascx 页面的 aspx 页面。我想做的是在 aspx 页面上声明一个全局变量,以便它的所有子项都可以看到它。我尝试了<% var i = 0; %>,但在子页面上看不到它。

我能做什么?

【问题讨论】:

    标签: c# .net asp.net asp.net-mvc global-variables


    【解决方案1】:

    aspx 页面中的变量不与部分视图共享。 视图只是一段数据的表示。您必须将数据作为模型传递给要渲染的每个视图,无论是普通视图还是 PartialView。

    <% Html.RenderPartial("ViewName", Model, ViewDataDictionnary) %>
    

    如果您想将变量传递给局部视图,我强烈建议您将此参数添加到局部视图的模型中,而不是通过 ViewDataDictionnary 额外传递。

    【讨论】:

    • 这是否适用于从共享视图继承的两个视图?如果我要在共享视图中声明和使用变量,我能否在继承视图中覆盖它以更改输出?
    • 我不确定是否理解与这个问题相关的案例,但视图只是一个呈现html的类。但是该变量仍然不会在对 RenderPartial 的不同调用之间共享,因为这会创建局部视图的不同实例。
    【解决方案2】:

    您可以将其添加到 ViewData,然后将 ViewData 传递给 ascx

    <% Html.RenderPartial("ViewName", Model, ViewData) %>
    

    msdn on RenderPartial

    所以在你的 aspx 页面中你会做类似的事情

    <% ViewData["i"] = 0; %>
    

    在您的 userControl 中,您只需检索它并根据需要使用它

    <% int i = (int)ViewData["i"] %>
    

    另一种方法是使用 RenderAction 并将其作为参数传递...所以我们需要知道您如何显示 ascx。

    msdn on RenderAction

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2011-03-22
      • 2011-02-12
      • 2012-11-11
      • 2019-09-11
      • 1970-01-01
      相关资源
      最近更新 更多