将类添加到ASP.NET MVC4项目

时间:2014-01-20 21:38:08

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

在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,我的学习曲线就像冰鞋上的犀牛一样。

2 个答案:

答案 0 :(得分:5)

我假设它是一个模型对象,您可以将它们添加到项目中的Model文件夹中。

如果您想让项目更具可扩展性,您可以创建一个单独的c#库项目并添加对MVC应用程序的引用。

答案 1 :(得分:1)

普通的ASP.NET Web Forms Web站点项目使用

App_Code。当您将类放在那里时,它们是由ASP.NET编译的(而不是像MVC项目中的Visual Studio那样)。在Web站点项目中,您基本上公开了代码文件,ASP.NET会为您编译。使用MVC时,您无法创建Web站点项目,而是创建在部署之前编译的项目。

如果要在MVC项目中使用此目录(不是首选),可以右键单击App_Code中的文件,然后将构建操作从Content更改为Compile。 (这样,当您编译MVC项目时,将从此目录中获取文件并将其编译为bin目录中的.dll。)

第二种可能更优选的方式是以不同方式组织文件。例如,在典型项目中,您可能具有/Infrastructure/Models等目录。您可以为业务逻辑层添加单独的类库项目,依此类推。