Asp.net mvc 添加到我的命名空间的类在MVC视图中不可用

Asp.net mvc 添加到我的命名空间的类在MVC视图中不可用,asp.net-mvc,namespaces,Asp.net Mvc,Namespaces,我已将以下类添加到.NET 3.5 MVC2 VB应用程序中的“我的命名空间”: Namespace My Public Class Environment Public Shared ReadOnly Property IsProduction As Boolean ...code here... End Property End Class End Namespace 我在整个应用程序中都使用过它,但我不能在视

我已将以下类添加到.NET 3.5 MVC2 VB应用程序中的“我的命名空间”:

Namespace My

    Public Class Environment

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

    End Class

End Namespace
我在整个应用程序中都使用过它,但我不能在视图中直接引用它。例如,此代码标记“My.Environment”,并表示它不是“My.Environment”的成员:


你在生产吗?


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

再次查看您的代码,Jamie是对的。在视图中使用该类之前,必须先实例化该类。假设您正在将实例化变量(例如,环境)传递给模型,则可以执行以下操作:

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

你在生产吗?


再看看你的代码,杰米是对的。在视图中使用该类之前,必须先实例化该类。假设您正在将实例化变量(例如,环境)传递给模型,则可以执行以下操作:

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

你在生产吗?


您的类环境不是静态类,因此,为了访问其成员,您需要它的实例。你使用它的方式就像它是一个静态类,而不是。如果我正在访问一个共享属性。我可以在不需要环境实例的控制器或其他类中调用“If My.Environment.IsProduction Then…”。我忘记了VB.NET使用的是共享而不是静态。:)您的类环境不是静态类,因此,为了访问其成员,您需要它的实例。你使用它的方式就像它是一个静态类,而不是。如果我正在访问一个共享属性。我可以在不需要环境实例的控制器或其他类中调用“If My.Environment.IsProduction Then…”。我忘记了VB.NET使用的是共享而不是静态。:)查看对Jamie评论的响应-属性是共享的,所以实例是必需的。是的,但在视图中,您无法访问所有内容。实际上,这就是MVC的目的。您只能访问视图中的模型。当然,您可以访问ViewData/ViewBag,但为了访问特定的方法,您可能需要使用HtmlHelper扩展。您是对的。忘了吧。感谢您的详细解释。请参阅对Jamie评论的回复-属性是共享的,因此实例是必要的。是的,但鉴于此,您无法访问所有内容。实际上,这就是MVC的目的。您只能访问视图中的模型。当然,您可以访问ViewData/ViewBag,但为了访问特定的方法,您可能需要使用HtmlHelper扩展。您是对的。忘了吧。谢谢你的详细解释。