将创建的模型添加到视图中需要完整的名称空间

本文关键字:空间 模型 创建 添加 视图 | 更新日期: 2023-09-27 18:18:31

我正在使用MVC 6创建我的第一个MVC应用程序。而例如在Register。CSHTML(默认创建)模型添加方式如下:

@model RegisterViewModel

但是当我想添加我创建的模型时,我必须这样做:

@model ProjectName.Models.HomeModels.MyModel

注意:我知道如何导入名称空间,我想知道的是,在默认视图中,无论如何都没有名称空间导入和添加模型,但对于我自己创建的模型,它们没有。

将创建的模型添加到视图中需要完整的名称空间

认为您在问为什么必须为您的类添加使用,而其他Microsoft类等在视图中自动可用而不需要使用?有一点黑魔法你没看到。好消息是,你可以做同样的事情。如果展开项目中的Views目录,应该会看到一个Web。配置文件在那里。这与主要的Web不同。用于您的项目的配置;这个只适用于Views目录下的东西。如果你打开这个文件,你会看到里面有这样一个部分:

<system.web.webPages.razor>
  <host factoryType="..." />
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Optimization"/>
      <add namespace="System.Web.Routing" />
      ...
    </namespaces>
  </pages>
</system.web.webPages.razor>

注意:缺少的用法。如果您还没有猜到,您可以在这里添加自己的名称空间。您在这里添加的任何内容都将自动为该名称空间的视图添加using语句。

哦。只是注意到核心标签。我认为这不再适用于core,但我将留下我的答案,以防有人需要MVC方法。在ASP。. NET Core,您将在Views目录中创建一个_ViewImports.cshtml文件,并在那里添加using语句:

_ViewImports.cshtml

@using MyProject.Models

需要使用@using命令指定命名空间。当您这样做时,这意味着您正在视图上使用该名称空间,并且可以从视图访问所有方法,但要小心其他名称空间中的重复名称。现在可以将模型添加到视图中。但是@using命令只能用于命名空间