在哪里可以将自定义类放在ASP.NET MVC中?


67

我有一些实用程序功能和分页功能。我想分别为这些函数创建名为Utility和Pagination的类,以便可以在多个控制器中使用这些类函数。

那么我可以在哪里将这些类放在文件夹结构中,然后如何访问呢?

Answers:


85

您可以Helpers在根目录下创建一个名为Folder的新文件夹,并将类实际保留在该文件夹中。我将类放在另一个名为Helpers

namespace MyProject.Helpers
{
  public class CustomerHelper
  {
        //Do your class stuff here
  }
}

为了在我的其他班级(例如:控制器)中接受此权限,我可以使用全限定名

var custHelper=new MyProject.Helpers.CustomerHelper(); 

要么

Import在顶部添加一条语句,以便我可以跳过完全限定的名称

//Other existing Import statements here
using MyProject.Helpers;
public class RackController : Controller
{
  public ActionResult Index()
  {
     var custHelper=new CustomerHelper(); 
     //do something with this  
     return View();    
  } 
}

如果您认为您的Helper方法也可以在另一个项目中使用,则可以考虑将它们物理上保留在单独的项目中(类型库的类型)。要在您的项目中使用此项目,请添加对此项目的引用,并像上面所做的那样使用它(使用完全限定名称或使用import语句)


6
@ppumkin-asp.net mvc中没有编码惯例,即不能创建自己的文件夹或命名空间。因此,不,它与任何编码实践都不相符,但与它们也不相符。这只是您自己控制的事情。
Erik Funkenbusch

1
是的,我最终使用了文件夹Helpers,现在它们在各处都可以重复使用。因此,这是一些很好的建议。您说的对,@ MystereMan确实没有记录在案的正确方法,但有很多类似这样的好建议。谢谢
Piotr Kula

我使用了“物理上分开的项目”,但在主MVC应用程序中找不到类库.config文件。在哪里可以找到设置文件,我只能在\ bin文件夹中找到.dll。
Iztoksson

因此,将创建的类放到Models或Utility类下的哪里去了。例如,我有一个类,其主要功能是存储方法返回的两个不同的数据结构。
eaglei22 '18

HelpersUtilities等。再次,有没有什么金科玉律。遵循对您的团队更有意义的内容。恕我直言,一致性比名称重要。
Shyju

12

您可以将帮助程序类放在逻辑上和方便的任何位置。

我个人Helpers从主项目文件夹创建一个文件夹。

您可以在任何地方使用它们,方法是完全限定类名或使用using语句。

在剃刀视图中,您将使用

@using MyProject.Helpers

在控制器或模型中,您将使用

using MyProject.Helpers;

7

另一种方法是创建基本控制器类,并在其中添加通用逻辑,然后从基本控制器派生您的控制器。

public class MyBaseController:Controller
{
   public void CommonFunction()
    {
    }
}

使用像...

public HomeController:MyBaseController
{
}

1
我喜欢这种解决方案,但是保留该解决方案的最佳位置在哪里?
Maya

6

您可以创建一个新项目,然后将通用类放入该项目。如果要使用它们,只需添加引用项目。


1

另外,请确保将您的类的“生成操作”设置为“编译”。在Visual Studio 2015中,默认情况下,在App_Code中创建的每个类(通过右键单击->添加->类)都将“内容”作为生成操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.