【发布时间】:2017-07-05 16:04:32
【问题描述】:
我有一个由“程序员”开发的 ASP.NET 应用程序。这个应用程序包含所有你不应该做的事情:
- 硬编码设置
- 在任何地方复制/粘贴(代码不重复使用)
- 为每一行向数据库发出大量小的 SELECT 请求,而不是执行 JOIN
- 模型、视图和控制器合二为一
- 等
现在,我的目标不是扔掉所有东西重新开始,而是想将应用程序的 MVC 的不同方面分开。我不想开始一个新的 MVC 项目,我想将现有的解决方案演变成模块化的东西。
对于控制器,没有问题,我可以创建管理数据库连接、发送邮件等的类。另一方面,我不知道如何分离视图和控制器。
传统ASP页面myPage.aspx有一个关联文件myPage.aspx.vb的问题,在这个vb文件中既有视图管理部分(页面元素,例如下拉菜单)以及在按钮单击时执行的业务部分(控制器)。
我考虑调用一个 myPageControl.vb 类,该类将包含文件 myPage.aspx.vb 中的业务部分,该类将调用模型 (数据库、邮件、其他)。
(View: myPage.aspx.vb) -> (Control: myPageControl.vb) -> (Model: Db.vb, Mail.vb)
问题是:我应该如何从控制器修改页面内容,例如更改列表值或在其上显示文本。我必须调用视图(向另一个方向)并通过参数传递类 MyPage (.asp.vb)
我已经尝试找到我的问题的答案,但我只找到了有关 MVC 项目的答案。 有人知道我应该怎么做吗?
【问题讨论】:
-
这听起来像是一个 WebForms 应用程序,而不是一个 MVC 应用程序。除非我误读了:
"pages myPage.aspx have an associated file myPage.aspx.vb" -
顺便说一句 - 将其重写为 MVC 应用程序可能是您想要做的事情
-
请注意,WebForms 和 MVC 可以共存于同一个项目中。您可以逐渐将功能从一个转移到另一个。
-
我建议您稍后在重构中执行此操作。首先创建适当的业务对象和数据访问。这将集中最重要的部分(业务逻辑和数据库查询)。之后,看看创建 MVC。
-
控制器也不应该管理数据库连接——它应该在你的控制器与之对话的数据层中。
标签: c# asp.net asp.net-mvc vb.net