MVC代码重组

时间:2012-08-27 22:51:49

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-areas

我有一个巨大的MVC应用程序但不幸的是MVC领域没有用于初始开发。应用程序变得如此模块化,我们觉得有一个很好的案例可以使用区域。将整个代码移动到“区域”结构是多么容易或多难。 是否有任何重大挑战/代码重新工作等我必须注意的事情? 我可以创建新区域并将控制器视图模型移动到适当的存储桶中......它工作正常吗?我是在简化事情吗?如果有人之前采取过这条路线,会很感激反馈,评论..

1 个答案:

答案 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" });

除此之外,你应该做得很好。