gpt4 book ai didi

asp.net-mvc - 与 ASP.NET WebForms 相比,ASP.NET MVC 页面的 'page lifecycle' 是什么?

转载 作者:行者123 更新时间:2023-12-03 04:19:59 25 4
gpt4 key购买 nike

与 ASP.NET WebForms 相比,ASP.NET MVC 页面的“页面生命周期”是怎样的?

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

我正在寻找以下流程的“转换”,或者替代生命周期。

我目前在做什么:

(是的,我知道任何能够回答我问题的人都已经知道这一切——我只是想对“生命周期”进行比较,所以我想我应该先填写我们已经知道的内容都知道)

渲染页面:

  • 我有一个包含我的基本模板的母版页
  • 我的内容页面为我提供了母版页中放置内容的命名区域。
  • 在每个内容页面的事件处理程序中,我从数据库加载数据(大部分是只读的)。
  • 我将此数据绑定(bind)到代表网格、下拉列表或重复器的 ASP.NET 控件。这些数据都“存在”在生成的 HTML 中。其中一些会进入 ViewState(但我不会过多讨论!)
  • 我设置属性或将数据绑定(bind)到某些项目,例如页面上的图像或文本框控件。
  • 页面被发送到客户端,呈现为不可重用的 HTML。
  • 我尽量避免使用除页面最低需求之外的 ViewState。

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

  • 我可能会使用 JQuery 和一些令人讨厌的技巧来查找页面上的控件并对它们执行操作。
  • 如果用户从下拉列表中进行选择,则会生成回发,该回发会触发我的代码隐藏中的 C# 事件。该事件可能会进入数据库,但无论它做什么,一个全新生成的 HTML 页面最终都会被发送回客户端。
  • 我可以使用 Page.Session 来存储稍后需要重用的键值对

那么对于 MVC,这个“生命周期”会如何改变?

最佳答案

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

您的母版页仍然存在于 MVC 中,并用于为站点提供一致的布局。没有太多新东西。

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

Web 表单的事件处理不应在 MVC 中使用,相反,您的 Controller 类及其操作方法将负责将数据加载到传递到 View 的“模型”中。

尽管在 MVC 中可以实现 Webform 样式的数据绑定(bind),但我发现这不是最佳解决方案。最好将数据放在模型类中并强类型化您的 View ,以便您可以直接访问该模型。那么只需使用 <%= ViewData.Model.SomeProperty %> 即可语法来访问您的数据并将其显示在所需的位置。至于 View 状态,我的建议是忘记它的存在。

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

我强烈推荐 JQuery 或其他类似强大的 JavaScript 库之一。但学习使用它们直接访问 HTML DOM 并避免 Webform 控件的 id mangling 问题。

您可以使用 jquery 连接到客户端的下拉选择并提交标准或 ajax 样式请求。这些请求可以返回新页面、重定向、html 片段甚至可用于更新现有页面的 JSON 数据。

可以根据需要使用asp.net Session。

关于asp.net-mvc - 与 ASP.NET WebForms 相比,ASP.NET MVC 页面的 'page lifecycle' 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/460145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com