问题描述
我开始使用MVC,并且正在关注this sample。
在其中,我们发现Blog
类型包含在Controller
命名空间的Mvc3ViewDemo.Controllers
的类文件中。这在设计方法上有点不妥当,因为每个类都应保存在自己的文件中。 (至少那是我的特殊习惯。)
但是当我们将其移到其自己的文件中时-即使使用相同的名称空间-Controller也将不再看到它:
(在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是否会迫使我将所有类与控制器放在相同的文件中?当我们需要两个或多个控制器使用的模型时该怎么办?
-编辑-
此外,我无法将用于目标名称空间的Imports
(using
)语句添加到Controller类文件中:
解决方法
问题在于Blog
类文件的Build Action设置为Content
。显然,这是在App_Code
下创建的新代码文件的默认操作,这就是我错过它的原因。一直在我的鼻子底下。
我将其设置为Compile
,现在一切正常。
-编辑-
我已经提交了一个错误报告,可以here进行审查。