【问题标题】:Class added to My namespace not available on MVC view添加到我的命名空间的类在 MVC 视图中不可用
【发布时间】:2011-08-16 14:11:11
【问题描述】:

我在 .NET 3.5 MVC2 VB 应用程序的 My 命名空间中添加了以下类:

Namespace My

    Public Class Environment

        Public Shared ReadOnly Property IsProduction As Boolean
            ...code here...
        End Property

    End Class

End Namespace

我在整个应用程序中都使用了它,但我无法直接在视图上引用它。例如,这段代码标记了“My.Environment”并说它不是“My”的成员:

<p>
    Are you are in production? <%= My.Environment.IsProduction %>
</p>

是否需要执行额外的步骤才能让视图看到我添加到 My 命名空间中的内容?

【问题讨论】:

  • 你的类 Environment 不是一个静态类,因此,为了访问它的成员,你需要一个它的实例。你使用它的方式好像它是一个静态类,但它不是。
  • 如果我正在访问共享属性,则不会。我可以在不需要 Environment 实例的控制器或其他类中调用“If My.Environment.IsProduction Then ...”。
  • 我忘记了 VB.NET 使用共享而不是静态。 :)

标签: asp.net-mvc namespaces


【解决方案1】:

再次查看您的代码,Jamie 是对的。您必须先实例化该类,然后才能在视图中使用它。假设您将实例化变量(例如环境)传递给模型,您可以这样做:

<p>
Are you are in production? <%= model.IsProduction %>
</p>

【讨论】:

  • 查看对 Jamie 评论的回复 - 属性是共享的,因此需要实例。
  • 是的,但在 View 中,您无法访问所有内容。实际上这就是 MVC 的目的。您只能访问视图中的模型。当然,您可以访问 ViewData/ViewBag,但为了访问特定方法,您可能需要使用 HtmlHelper 扩展。
  • 你是对的。忘了那个。感谢您的详尽解释。
猜你喜欢
  • 1970-01-01
  • 2015-04-27
  • 2016-12-06
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
相关资源
最近更新 更多