栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

updatepanel vs页面方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

updatepanel vs页面方法

几年前我曾经是和你一样,我曾经使用

UpdatePanel
增益性能,有错误的想法,我增加了我的应用程序的性能

好吧,我完全错了,它

UpdatePanel
是所有UI邪恶的根源,首先,它 掩盖
了使用AJAX的复杂性,这使我们大多数人都容易使用,这使我们产生了错误的想法,即我们正在创建响应式应用程序,这比如果我们根本不使用它(这是我以前在所有页面上都使用它的主要原因,并且我相信这就是许多开发人员使用它的原因…因为这很容易)。

考虑以下文章:

  • 为什么不应该将整个站点放在UpdatePanel中

  • UpdatePanel是邪恶的

当您了解

UpdatePanel
PageMethod
REST WCF服务或REST WCF服务的简单调用的真正作用时,您会发现它们之间的巨大差异。

  • UpdatePanel
    。当您从中执行发布时,必须执行
    UpdatePanel
    整个页面生命周期,这意味着,它需要在每个发布中发送所有页面ViewState,当您的页面随着多个控件的复杂性增长时,ViewState肯定会很大这肯定是性能问题。使用它们,您只会获得 部分渲染
    UpdatePanel
    尽管您需要在每个请求上发送整个ViewState,但是将渲染您内部的控件而没有完整的回发。

  • PageMethod
    。页面方法是
    static
    ,就像它们是服务方法一样被调用,它们不需要创建整个页面生命周期就可以执行,因此它们的执行速度更快。

因此,似乎可以使用

PageMethods
解决方案,问题是
PageMethods
通常用于返回JSON对象,这意味着您将必须 手动
呈现这些对象。这意味着,如果您想摆脱一切
UpdatePanel
,则必须更改视图中使用的控件,例如,您将无法使用
GridView
开箱即用的功能,而必须进行更改它用于JQGrid(或类似版本)。

如果要创建MVC应用程序,这是很自然的,但是对于传统的ASP.Net,这并不容易。

您还需要考虑一些非常重要的事情, 默认情况下,每个帖子都会验证ViewState
,您可以将其关闭,但是如果您要确保ViewState未被损坏,则不建议这样做

考虑此示例,您有两个

DropDownList
控件(名为:ddl1,ddl2), ddl2 取决于 ddl1,
因此使用
SelectedIndexChanged
事件填充第二个下拉列表。但是,如果您尝试使用AJAX调用(不带
UpdatePanel
)进行相同的操作,则会遇到两个问题

  • 渲染时,您需要手动将对象添加到

    select
    表示的HTML 控件中
    DropDownList
    。您可以使用第三方框架使用javascript绑定这些控件,我建议您使用基因敲除 js (它很棒)

  • 这就是问题。

    DropDownList
    使用javascript 更改第二个内容 后,由于ViewState无效因此无法在页面上进行简单发布 ,并且您将看到以下异常:

无效的回发或回调参数。

解决方法是指定哪些值在服务器端将是有效的,为此,您需要重写page

Render
方法并指定 第二个下拉列表中的每个值
,但这将增加页面大小,并且显然,这不是一个好选择

看一看:

  • ASP.NET事件验证和“无效的回调或回发参数”:第一部分

  • ASP.NET事件验证和“无效的回调或回发参数”:第二部分

因此,作为总结,如果您想摆脱所有

UpdatePanel
控件,则需要将现有服务器控件替换为javascript友好控件。还要记住,如果这样做,则不必依靠页面发布机制,而必须使用AJAX在服务器上执行操作,否则,将获得
Invalid postback或callback参数。 例外。换句话说,如果可能,最好考虑迁移到MVC应用程序。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427358.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号