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

问题描述

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

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

但是当我们将其移到其自己的文件中时-即使使用相同的名称空间-Controller也将不再看到它:

enter image description here

(在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>

enter image description here

...但是控制器不能。

如果将其放在Models文件夹中,则Controller和View都看不到它。

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

-编辑-

此外,我无法将用于目标名称空间的Importsusing)语句添加到Controller类文件中:

Models.Blog

Bad Imports statement

Refactor suggestion

解决方法

问题在于Blog类文件的Build Action设置为Content。显然,这是在App_Code下创建的新代码文件的默认操作,这就是我错过它的原因。一直在我的鼻子底下。

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

-编辑-

我已经提交了一个错误报告,可以here进行审查。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...