MVC 中代码 类(POCO、模型等)的正确位置是什么?

What is the proper location for code classes (POCO, Models, etc.) in MVC?

我正在开始使用 MVC,并且正在关注 this sample

在其中,我们发现 Blog 类型包含在 Controller 的 class 文件中,在 Mvc3ViewDemo.Controllers 命名空间中。这在设计方法上有点禁忌,因为每个 class 都应该保存在自己的文件中。 (至少这是我的特殊约定。)

但是当我们将它移出到它自己的文件中时——即使使用相同的命名空间——控制器再也看不到它了:

(在 VB.NET 中,顶级命名空间 Mvc3ViewDemo 在项目级别指定。)

我尝试将文件放在 App_Code 和项目根目录中:

Namespace Controllers
  Public Class Blog
    Public Property Name As String
    Public Property Url As String
  End Class
End Namespace

视图可以看到:

@ModelType IEnumerable(Of Controllers.Blog)

@Code
  ViewData("Title") = "Blog"
End Code

<h2>BLOG</h2>

<ul>
  @For Each oBlog In Model
    @<li><a href="@oBlog.Url">@oBlog.Name</a></li>
  Next
</ul>

...但控制器不能。

如果放在Models文件夹下,Controller和View都看不到。

恐怖中的恐怖! MVC 是否会强制我将所有 classes 放在与我的控制器相同的文件中?当我们需要一个由两个或更多控制器使用的模型时,我们该怎么办?

--编辑--

此外,我无法将目标命名空间的 Imports (using) 语句添加到控制器 class 文件:

问题是 Blog class 文件的构建操作设置为 Content。显然,这是在 App_Code 下创建的新代码文件的默认操作,这就是我错过它的原因。一直都在我眼皮底下。

我将其设置为 Compile,现在一切正常。

--编辑--

我已提交错误报告,可能会被审核 here