加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – UpdatePanel和ClientIDMode =“静态”的可能解决方案

发布时间:2020-12-16 06:25:47 所属栏目:asp.Net 来源:网络整理
导读:我一直在寻找Asp.NET中静态ClientIDMode UpdatePanel的解决方案,如 http://connect.microsoft.com/VisualStudio/feedback/details/584991/clientidmode-static-in-updatepanel-fails-to-do-async-postback所示 问题出在Sys.WebForms.PageRequestManager.uniq
我一直在寻找Asp.NET中静态ClientIDMode UpdatePanel的解决方案,如 http://connect.microsoft.com/VisualStudio/feedback/details/584991/clientidmode-static-in-updatepanel-fails-to-do-async-postback所示

问题出在Sys.WebForms.PageRequestManager.uniqueIDToClientID函数中,它通过将“$”字符替换为“”将名称转换为id.
我做了一个似乎有用的修复,但我希望你们能告诉我你的想法以及我是否遗漏了什么.非常感谢!

var old_uniqueIDToClientID = Sys.WebForms.PageRequestManager.prototype._uniqueIDToClientID;
Sys.WebForms.PageRequestManager.prototype._uniqueIDToClientID = function (arg) {
    var element = this._form.elements[arg];
    return (element) ? element.id : old_uniqueIDToClientID(arg)
}

解决方法

我们做了类似的修复,但是我们改变了另一个涉及搜索导致回发的元素的函数.

我们在主页的底部放置了以下代码,以确保在scriptmanager加载脚本后包含它.本质上它会一直修改id,直到找到导致回发的元素.原始代码通过从美元符号分隔的名称右侧删除标记来搜索元素.所以“$ctl00 $ddl001”将成为“$ctl00”.如果您使用静态ID,则该后缀可能永远不存在.我们将函数修改为从左侧开始并删除容器名称,直到找到元素.

它现在似乎对我们有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读