我有一个巨大的MVC应用程序但不幸的是MVC领域没有用于初始开发。应用程序变得如此模块化,我们觉得有一个很好的案例可以使用区域。将整个代码移动到“区域”结构是多么容易或多难。 是否有任何重大挑战/代码重新工作等我必须注意的事情? 我可以创建新区域并将控制器视图模型移动到适当的存储桶中......它工作正常吗?我是在简化事情吗?如果有人之前采取过这条路线,会很感激反馈,评论..
答案 0 :(得分:6)
该应用程序可以正常使用区域。由于分离,它将使维护和逻辑查看变得更容易。但是,你会遇到一些困境。
<强>命名空间强>
第一个很可能是名称空间。当您将连接的逻辑或模型与依赖关系分开时,如果将依赖类放在区域中,则它们的命名空间引用可能需要更改。幸运的是,Visual Studio可以通过简单的“Resolve”功能来处理这些问题。如果您尝试编译并向您显示存在问题的所有位置,编译器应该抛出。很难预见所有这些事件的发生地点。但是,很可能没有多少使用指令,因为许多不同控制器使用的大多数应该在一个地方。
<强>路由强>
如果要使用区域,几乎所有使用的操作链接都必须更改。您将被迫更改它们以代表新区域。
没有区域(在基地):
@Html.ActionLink("Label For Link", "ActionName", "ControllerName", new { area = "" }, null)
具体领域:
@Html.ActionLink("Label For Link", "ActionName", "ControllerName", new { area = "SpecificAreaName" }, null)
您可能还需要更改任何return RedirectToAction
代码。
基地区域:
return RedirectToAction("ActionName", "ControllerName");
特定区域:
return RedirectToAction("ActionName", "ControllerName", new { Area = "SpecificAreaName" });
除此之外,你应该做得很好。