tsh*_*hao 9 asp.net asp.net-mvc
我想我们中的许多人过去常常面临同样的问题:将现有Web表单App移植到MVC的最佳实践是什么.对我来说,情况是我们同时支持Web表单和MVC.这意味着,我们在MVC中创建新功能,同时在Web表单中维护旧页面,并且它们都在同一个项目中.
关键是:我们希望保持DRY(不要重复自己)原则并尽可能减少重复代码.ASPX页面不是问题,因为我们只在MVC中创建新功能,但仍然有一些共享组件我们想要重新使用新/旧页面:
这里的问题是:是否可以创建一个可用于Web表单和MVC的公共母版页/用户控件?我知道,ViewMasterPage从继承母版和ViewUserControl从继承用户控件,所以它也许 OK,让Web窗体和MVC ASPX页面参考MVC版本.我做了一些测试,发现有时它会在渲染用户控件时产生错误.
您可以与我分享任何想法/经验吗?非常感谢它.
背景:
这个UI项目已经创建多年,有20多人正在研究它.在我开始共同的母版页面试用之前,大约有50多个Web表单页面和只有一个MVC页面.我们在MVC上创建了新功能,但旧页面保留在Web表单中.
这种情况将持续很长时间,可能是因为这是一家以业务为导向的公司,因此新功能始终处于更高优先级.这意味着我们需要同时支持两者.
使用带有Web表单页面和用户控件的ASP.NET MVC母版页有几个集成问题.由于两个框架的执行管道不完全相同,因此遇到一些问题是正常的.
我遇到的一件事是Web表单使用单一界面模式(页面上有一个<form>
标签runat="server"
).在您的母版页或使用它的页面中,如果要使用服务器控件,则必须自己创建此标记.请注意,这将适用于只读控件.如果您需要回发和事件处理,您可能会遇到更多事件处理和事件验证问题.
另外一个技巧是创建html帮助器,将现有控件呈现为字符串.您可以查看更多信息http://www.abadjimarinov.net/blog/2009/10/29/HowToRenderAspdotNETControlToString.xhtml这也是一个部分解决方案,因为它不适用于大多数用户控件.
提供一些代码或错误消息会很有帮助,所以我可以给你更具体的答案.在这个级别,我只能说两个框架是兼容的,你可以集成它们,但这不会轻松,需要对现有代码进行一些更改.
共享母版页:请参阅此线程。
用户控制:
这是我使用 MVC 的祸根之一;在 MVC2 和之前的版本中,没有与 Webforms 用户控件直接等效的东西。一种解决方法是创建 HtmlHelpers -(有效地将方法扩展到Html
返回 HTML 的视图中可用的对象),但这意味着您必须在代码中呈现 HTML。太糟糕了。
借助 MVC3 和 Razor 视图引擎,可以使用新的 Html Helpers 类,它提供了用户控件的大部分优点,包括将它们放置在单独的程序集中的能力(因此可以在多个项目中使用)。我会看看是否可以找到示例链接,但 Scott Guthrie 的博客在他最近的 MVC3/Razor 帖子之一中有一个示例。
归档时间: |
|
查看次数: |
1340 次 |
最近记录: |