从同一控制器/视图调用不同的操作

时间:2014-09-19 18:24:58

标签: asp.net-mvc

以下是该方案: 我正在研究文件/文件夹管理系统。当我想创建一个新文件夹时,我想在服务器和dropBox中创建它(使用API​​)。 我的代码现在的组织方式是我有两个控制器,一个用于文件夹“Folder”,另一个用于DropBox交互“DropBox”

使用返回RedirectToAction()对我有用,但我不认为这是最好的方法。

这是我的通话顺序: - 在Folder视图中,我在“Folder”控制器中调用create_folder。 - 完成“文件夹”控制器中的所有处理后,我使用返回RedirectToAction(“create_Folder”,“DropBox”)重定向到“DropBox”控制器 - 完成“DropBox”控制器中的所有处理后,我重定向回“文件夹”索引视图以显示创建的文件夹。

我认为这不是最好的方法。我认为这是一个路由概念,我不是真的在这里理解。 当我试图在文件夹控制器中添加一个新动作(我称之为Create_Folder_complete)并包含Create_Folder()然后调用Create_Folder_DRopBox()时,我得到一个引用null错误消息。

我在这里失踪了什么?我想让我的代码尽可能干净,并遵循MVC最佳实践。

2 个答案:

答案 0 :(得分:2)

你不应该为每项任务分别采取行动。该操作负责创建"文件夹"。它还与DropDox交互以创建文件夹的事实是一个不应该向最终用户公开的实现细节。直接在一个响应提交创建文件夹表单的操作中全部工作,然后重定向到成功页面或在出错时返回视图。

答案 1 :(得分:1)

为什么不创建一个可以处理您在文件夹控制器功能和保管箱控制器功能中执行的处理的服务。您可以从文件夹控制器调用此服务方法,然后在文件夹控制器完成时重定向到文件夹控制器的索引操作。