Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以下哪一部分进入模型与控制器?_C#_Asp.net Mvc - Fatal编程技术网

C# 以下哪一部分进入模型与控制器?

C# 以下哪一部分进入模型与控制器?,c#,asp.net-mvc,C#,Asp.net Mvc,我的应用程序的一个步骤需要执行5项任务 接收CSV文件作为用户上载的一部分 将CSV中的每一行解析为规范表示 创建与该表示相关的ORM POCO 将每个项目保存到数据库中 向每个POCO中定义的电子邮件地址发送电子邮件 我已经有了一个数据库ORM的存储库,而且我至少已经知道控制器不应该自己创建一个SmtpClient,但是控制器中有多少“胶水”呢?在代码气味下暴露比我的代码片段更多的细节吗 public ActionResult Index(HttpPostedFileBase file) {

我的应用程序的一个步骤需要执行5项任务

  • 接收CSV文件作为用户上载的一部分
  • 将CSV中的每一行解析为规范表示
  • 创建与该表示相关的ORM POCO
  • 将每个项目保存到数据库中
  • 向每个POCO中定义的电子邮件地址发送电子邮件 我已经有了一个数据库ORM的存储库,而且我至少已经知道控制器不应该自己创建一个SmtpClient,但是控制器中有多少“胶水”呢?在代码气味下暴露比我的代码片段更多的细节吗

    public ActionResult Index(HttpPostedFileBase file) {
    
        var result = model.HandleFileUpload (file);
    
        if (result.Success) 
        {
            return SuccessAction("Success");
        } else {
            return FailureAction("Failure");
        }
    
    }
    

    如果这一切都属于模型,那么我正在做的工作类型叫什么,如果我只是将较低级别的东西“粘合”在一起?

    您描述的瘦控制器对我来说很不错。它易于测试,并且通过在模型中创建一组松散耦合的服务类,使您能够轻松遵守单一责任原则,每个服务类处理流程的不同步骤。 这还允许您在需要时在MVC应用程序的范围之外使用代码

    因此,我设想您有一个
    FileHandler
    类来实现
    HandleFileUpload
    方法。 这将定义流程的步骤,可能调用
    文件解析器
    存储库
    、和
    EmailSender
    类,每个类都可以通过接口和注入
    文件处理程序的依赖项来使用


    你在做什么工作?开发您可以引以为豪的可维护软件:-)

    在实现这一点之后,这是一个非常干净的解决方案,允许了大量的可测试性。这也很容易理解。