在ASP.NET MVC4项目中,我有一个名为App_Code的子目录(手动创建)。它包含带有类的.cs文件。我在几个不同的.cshtml文件中使用这些类。 .cshtml文件按预期编译和工作。
我的类位于命名空间中:
namespace Foo {
public class Bar {
// ... properties
}
}
我想在控制器中使用其中一个类:
using System;
// ...
using Foo;
namespace MyProject.Controllers
{
public class MyController {
Foo.Bar SelectedBar { get; set; }
}
}
当我这样做时,我收到编译错误:
Error 3 The type or namespace name 'Foo' could not be found (are you missing a using directive or an assembly reference?)
如果我将.cs文件移动到Controllers目录,那么.cshtml类不能“看到”它们。
如何向MVC4项目添加类?我应该创建第二个项目吗?
我多年来一直在做C#,但它们都是Windows Forms和XAML。使用ASP.NET,我的学习曲线就像冰鞋上的犀牛一样。
答案 0 :(得分:5)
我假设它是一个模型对象,您可以将它们添加到项目中的Model文件夹中。
如果您想让项目更具可扩展性,您可以创建一个单独的c#库项目并添加对MVC应用程序的引用。
答案 1 :(得分:1)
App_Code
。当您将类放在那里时,它们是由ASP.NET编译的(而不是像MVC项目中的Visual Studio那样)。在Web站点项目中,您基本上公开了代码文件,ASP.NET会为您编译。使用MVC时,您无法创建Web站点项目,而是创建在部署之前编译的项目。
如果要在MVC项目中使用此目录(不是首选),可以右键单击App_Code
中的文件,然后将构建操作从Content
更改为Compile
。 (这样,当您编译MVC项目时,将从此目录中获取文件并将其编译为bin
目录中的.dll。)
第二种可能更优选的方式是以不同方式组织文件。例如,在典型项目中,您可能具有/Infrastructure
和/Models
等目录。您可以为业务逻辑层添加单独的类库项目,依此类推。