缩短MVC中的控制器方法

时间:2017-10-17 18:33:53

标签: asp.net-mvc asp.net-core-mvc

所以我正在编写一个ASP.NET核心MVC应用程序,用户应该可以上传Excel文件,当文件上传时我需要读取上传的文件,创建一个文件内的数据模型。

我目前正在我的Controller方法中创建此模型,但这使我的方法很长。

我目前的解决方案是在我的Controller中创建一个类,它处理从Excel文件创建模型,但我觉得这是错误的方法。

所以我的问题是:放置读取我的excel文件的代码并将其放入模型的正确位置是什么?

2 个答案:

答案 0 :(得分:0)

您应该创建一个新的.NET标准库,并在那里创建构建模型的类。

推荐的方法是使用类作为实现和接口(IExcelModelBuilder)来公开该类的所有公共方法(ExcelModelBuilder)。通过这种方式,您可以将此服务注入到控制器构造函数中,作为奖励,您也可以轻松地对其进行单元测试。

您可以阅读有关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 :(得分:0)

步骤1:创建新的.NET标准库(服务)

步骤2:将引用添加到该库的mvc应用程序中。

步骤3:如果您要执行的任务数量有限,则第二步创建一个将处理所有类似内容的类, 但是如果你想分开它并想要一个通用的解决方案然后创建一个接口(IUpload),然后在一个类中实现它的所有方法(上传)。还要在你的启动文件中注册该服务: