我有一个由程序员"开发的ASP.NET应用程序。此应用程序包含您不应该执行的所有操作:
现在,我的目标不是抛弃一切并重新开始,但我想分离应用程序的MVC的不同方面。我不想开始一个新的MVC项目,我想将现有的解决方案发展成模块化的东西。
对于控制器,没有问题,我可以创建将管理数据库连接,发送邮件等的类。另一方面,我不知道如何分离视图和控制器。
传统ASP页面 myPage.aspx 有一个关联文件 myPage.aspx.vb 的问题,在这个vb文件中有两个视图管理部分(页面元素,比如下拉列表)以及按钮点击时执行的业务部分(控制器)。
我考虑过调用 myPageControl.vb 类,该类将包含文件 myPage.aspx.vb 中的业务部分,该文件将调用模型( db,mail,other)。
(View: myPage.aspx.vb) -> (Control: myPageControl.vb) -> (Model: Db.vb, Mail.vb)
问题是:我该如何修改控制器中的页面内容,例如更改列表值或在其上显示文本。我必须调用View(向另一个方向)并通过参数传递类MyPage(.asp.vb)
我已经尝试找到我的问题的答案,但我发现只有MVC项目的答案。 有谁知道我应该怎么做?
答案 0 :(得分:0)
关注分离是webforms的主要问题之一,也是MVC的优势之一。在我看来,你可能做的最好的事情是将业务逻辑分成类似于你现在正在做的类,这样代码可以在整个应用程序中重用,但完全"分离"一切都可能需要将应用程序重建为MVC应用程序。
答案 1 :(得分:-1)
我发现的唯一答案是让控制器发送"数据绑定到"以XML格式显示页面那么所有页面当然都是它的page_load,然后是一个接收XML并从中更新自身的方法。您可以使用智能命名结构,以便可以从xml到页面元素进行反射和自动绑定。
然后在一个动作上,让页面生成一个包含它的所有元素的xml及其值,并通过" ProcessAction"确定正确控制器并在控制器上调用正确方法的方法。
但正如所建议的那样,作为一个MVC项目做这件事可能最有意义,如果这是你想要的模式。我的建议是有效的,但它将与从头开始使用MVC一样多或多的工作。此外,请记住"支持"对于网络表单很快就会消失。它不在(并且不会进入).NetCore,所以它的日子已经屈指可数了。