【发布时间】:2012-07-17 04:20:09
【问题描述】:
我有一些实用功能和分页功能。我想为这些函数分别创建名为 Utility 和 Pagination 的类,以便我可以在多个控制器中使用这些类函数。
那么我可以将这些类放在我的文件夹结构中的什么位置,以及如何访问呢?
【问题讨论】:
标签: .net asp.net-mvc
我有一些实用功能和分页功能。我想为这些函数分别创建名为 Utility 和 Pagination 的类,以便我可以在多个控制器中使用这些类函数。
那么我可以将这些类放在我的文件夹结构中的什么位置,以及如何访问呢?
【问题讨论】:
标签: .net asp.net-mvc
您可以在根目录下创建一个名为Helpers 的新文件夹,并将您的课程物理保存在那里。我会将我的课程放在另一个名为 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 语句)
【讨论】:
Helpers 或 Utilities 等。同样,没有黄金法则。遵循对您的团队更有意义的事情。恕我直言,一致性比名称重要。
您可以将帮助类放在任何您认为合乎逻辑且方便的地方。
我个人在主项目文件夹之外创建了一个文件夹Helpers。
您可以在任何地方使用它们,方法是完全限定类名或使用using 语句。
在 Razor 视图中,您将使用
@using MyProject.Helpers
在您将使用的控制器或模型中
using MyProject.Helpers;
【讨论】:
另一种方法是创建一个基本控制器类并在其中添加您的通用逻辑,然后从您的基本控制器派生您的控制器。
public class MyBaseController:Controller
{
public void CommonFunction()
{
}
}
使用类似...
public HomeController:MyBaseController
{
}
【讨论】:
你可以新建一个工程,然后把常用的类放到工程里面。如果你想使用它们,只需添加引用项目。
【讨论】:
另外,请务必将您的类的“构建操作”设置为“编译”。 在 Visual Studio 2015 中,默认情况下,在 App_Code 中创建的每个类(通过右键单击 -> 添加 -> 类)都将“内容”作为构建操作。
【讨论】: