c# – 将遗留专有Web应用程序重写为MVC3 / Entity-Code-First
几个月来,我发布了一些关于ASP.NET应用程序和数据库抽象层结构的问题,目的是重写(从头开始)一个遗留的Web应用程序.我最近偶然发现了MVC3 / Entity-Code-First,花了一些时间后,它已经爱上了它的工作方式,如何抽象出来,我正在寻找任何借口来使用它!
遗留应用程序是一个C/C++LI窗口服务,它生成它自己的HTML(非常老派的HTML,其中CSS只用于颜色,表格比比皆是),并且界面与业务逻辑紧密耦合.基本上,任何事情都会有所改善. 然而,也许这是因为我还没有花足够的时间与MVC,我有一些唠叨的疑虑,并想知道你们中的一些MVC-Pros是否可以在我的方向上挥发他们的经验. >遗留应用程序使用自定义控件(它们自己的形式)将组合框绑定到数据,并根据另一个组合框中的选择动态重新填充依赖组合框.在ASP.NET中,这个问题很容易回答,因为只需在页面上抛出一个asp:DataList控件,将其绑定到数据源即可.一些简单的代码允许您过滤所选值上的其他组合框.在ASP.NET中,实现另一个数据列表也很容易,甚至以这种方式自动化依赖数据(这将很好地模仿遗留应用程序的行为).我似乎无法在MVC中找到自定义控件的概念,但我认为这种东西是由jQuery调用处理来获取数据并将其放入组合框中.但是每个包含一个组合框的每个组合框都能完成吗?这是一个部分视图的情况,传递适当的参数,或者这只是愚蠢的? public ActionResult Index() { var movies = from m in db.Movies where m.ReleaseDate > new DateTime(1984,6,1) select m; return View(movies.ToList()); } 然后在视图中使用@foreach循环进行渲染.这一切都很棒.遗留应用程序有一个浏览页面,供系统的所有其他区域使用(超过50个).它通过检查为登录用户定义的列顺序来执行此操作,展平任何外键(以便显示外部表上的字段而不是非用户友好的主键值)并允许用户应用自定义过滤器到任何列.它也适用于行数超过100k的表.如何使用Entity-framework和views编写类似的内容?在ASP.NET中,我可能通过动态生成某种网格视图并让它自动生成列并应用过滤器来解决这个问题.这似乎可能是我在MVC中的更多工作.我错过了什么? var records = from rec in myTable where someField = someValue select rec; foreach(rec in records) rec.applyCalculation(); db.SaveDbChanges(); 我怀疑这可能需要花费很多时间,而遗留应用程序只会: UPDATE myTable SET field1 = calc WHERE someField = someValue 所以我并不完全清楚我们如何以这种方式使用我们的模型. 对不起,这是一个很长的问题.经过ASP.NET和MVC3的多年调查工作,我真的很想使用MVC3! 解决方法
如果我设法正确提取问题,那么这将是我的回复:
>您对主 – 详细信息下拉(或其他控件)的思考是正确的. jQuery AJAX / JSON调用(主要是GET)将是您所需要的.如果您的页面上只有一个下拉列表,那么当然您不需要这种交互性 – 您可以在控制器操作中为它准备模型(创建一个SelectList对象). HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |