当前位置:  开发笔记 > 编程语言 > 正文

与ASP.NET WebForms相比,ASP.NET MVC页面的"页面生命周期"是什么?

如何解决《与ASP.NETWebForms相比,ASP.NETMVC页面的"页面生命周期"是什么?》经验,为你挑选了1个好方法。

与ASP.NET WebForms相比,ASP.NET MVC页面的"页面生命周期"是什么?

我试着更好地理解这个"简单"的问题,以确定我(非常)简单站点中的现有页面是否可以从ASP.NET WebForms轻松转换.

下面的过程"转换"或替代生命周期将是我正在寻找的.

我目前在做什么:

(是的,我知道任何有能力回答我的问题的人都知道这一切 - 我只是试着对'生命周期'进行比较,所以我想我会先填写我们已经知道的内容

渲染页面:

我有一个包含我的基本模板的母版页

我有内容页面,从主页面给我命名区域,我把内容放入其中.

在每个内容页面的事件处理程序中,我从数据库加载数据(主要是只读的).

我将此数据绑定到表示网格,下拉列表或转发器的ASP.NET控件.这些数据全部"生活"在生成的HTML中.其中一些进入ViewState(但我不会进入太多!)

我设置属性或将数据绑定到页面上的某些项目,如Image或TextBox控件.

页面被发送到呈现为不可重用HTML的客户端.

我尽量避免使用ViewState而不是页面需要的内容.

客户端(不使用ASP.NET AJAX):

我可能会使用JQuery和一些讨厌的技巧来查找页面上的控件并对它们执行操作.

如果用户从下拉列表中进行选择,则会生成一个在我的代码隐藏中触发C#事件的回发.此事件可能会转到数据库,但无论如何,完全新生成的HTML页面最终会被发送回客户端.

我可以使用Page.Session存储我需要稍后重用的键值对

那么对于MVC,这个"生命周期"如何变化?



1> Mike Glenn..:

我将尝试评论您提到的每个要点:

您的母版页仍然存在于MVC中,用于为站点提供一致的布局.那里没什么新意.

您的内容页面将成为MVC世界中的视图.它们仍然为您的母版页提供相同的内容区域.

不应在MVC中使用事件处理webforms,而是将Controller类及其操作方法处理将数据加载到传递给视图的"模型"中.

虽然在MVC中可以进行webform样式数据绑定,但我发现它不是最佳解决方案.最好将数据放在模型类中并强烈键入视图,以便直接访问该模型.然后,只需使用<%= ViewData.Model.SomeProperty %>语法来访问您的数据并将其显示在所需的位置.至于viewstate,我的建议是忘记它甚至存在.

请记住,使用MVC的一个优点是您可以控制发送给客户端的HTML.拥抱这种力量,并尝试找到允许您保持控制的解决方案.Webform控件试图隐藏您的html,因此在需要时更难以自定义html.

我强烈推荐JQuery或其他类似功能强大的javascript库.但是学会使用它们直接访问HTML DOM并避免webform控件的id错误问题.

您可以使用jquery挂钩到客户端的下拉列表选项并提交标准或ajax样式请求.这些请求可以返回新页面,重定向,html片段甚至可用于更新现有页面的JSON数据.

可以根据需要使用asp.net会话.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有