因此,我正在编写一个ASP.NET Core MVC应用程序,用户应该能够上传Excel文件,当文件上传时需要读取上传的文件并创建一个模型数据文件。MVC中的Shorten控制器方法
我目前在我的Controller方法中创建了这个模型,但是这使得我的方法很长。
我目前的解决方案是在我的控制器中创建一个类,它处理从Excel文件创建模型,但我觉得这是做错的一种方法。
所以我的问题是:什么是正确的地方把代码,读取我的Excel文件,并将其放入模型?
因此,我正在编写一个ASP.NET Core MVC应用程序,用户应该能够上传Excel文件,当文件上传时需要读取上传的文件并创建一个模型数据文件。MVC中的Shorten控制器方法
我目前在我的Controller方法中创建了这个模型,但是这使得我的方法很长。
我目前的解决方案是在我的控制器中创建一个类,它处理从Excel文件创建模型,但我觉得这是做错的一种方法。
所以我的问题是:什么是正确的地方把代码,读取我的Excel文件,并将其放入模型?
您应该创建一个新的.NET标准库并在那里创建构建模型的类。
推荐的方法是使用该类作为实现和公开该类的所有公共方法(ExcelModelBuilder)的接口(IExcelModelBuilder)。通过这种方式,您可以将此服务注入到控制器构造函数中,作为奖励,您也可以轻松地对其进行单元测试。
您可以阅读更多关于Dependency Injection in .NET Core。
你可以在你的启动文件注册服务:
// This method gets called by the runtime.
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
{...}
services.AddTransient<IExcelModelBuilder, ExcelModelBuilder>();
}
第1步:创建一个新的.NET标准库(服务)
第2步:添加到参考的是,MVC应用程序图书馆。
步骤3:如果您要执行的任务数量有限,则第二步创建一个将处理所有类似问题的类,但如果要将其分开并想要一个通用解决方案,请创建一个接口(IUpload),然后在类中实现其所有方法(Upload)。或者在启动文件中注册该服务: