.net 使用模板页,JS使用document.getElementById("")得到null的解决办法

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

         写一个简单的文件上传,需要在前端使用js判断类型和大小等等(安全考虑,虽然这些都可以修改,这是后话),原本以为两三行的代码,五分钟可以解决,没想到遇到了问题。折腾了很久,后面查看网页源码才发现问题出现在控件的ID上。

楼主使用模板页,前端大致如下:

   <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <form id="Form" runat="server">
    <asp:FileUpload ID="uploadFile"  runat="server" /><asp:Label ID="tips" runat="server" Text="(支持gif,jpg,png,bmp格式)"></asp:Label><br/>
    <asp:Button ID="Upload" runat="server" OnClientClick="return CheckWorkFile();" onclick="Upload_Click" Text="点击上传" />
    </form>

A.在JS中var obj = document.getElementById("uploadFile");得到obj是null,做了如下尝试:

1)不适用.net的控件,换成普通html input标签,JS可以获取具体的对象;

2)不适用模板页,在普通页面中使用.net的控件,JS也可以获取具体的对象;

以上两点基本可以断定是使用模板页导致的。

B.然后借鉴网友智慧,做了以下尝试:

1)使用<%=uploadFile.ClientID%>,即var obj = document.getElementById("<%=uploadFile.ClientID%>"),虽然很多网友成功验证了,但是我仍然得到null;

2)更换JS的 位置,的确html dom加载和JS执行会有先后次序。不幸,我多次尝试,依旧面对null;

C.我的解决之道:

查看网页源代码之后,发现  <asp:FileUpload ID="uploadFile"  runat="server" />ID不是“uploadFile”,而是“ContentPlaceHolder1_uploadFile“,原来是拼接过来的,

JS改为var obj = document.getElementById("ContentPlaceHolder1_uploadFile")终于摆脱null。

测试了chrome  Firefox和IE都通过。



22-作业一:JS实现网表格的增删改功能 js实现表格增删改 阅读详情

相关推荐

jQuery后台框架:老系统渐进式升级的兼容性实践

在WebForms等传统ASP.NET后台系统仍广泛服役的现实下,'渐进式增强'成为技术演进的关键路径。其核心原理是通过轻量级前端补丁(如jQuery+iframe+Cookie)实现交互体验升级,而非推倒重来。这种方案的技术价值在于规避了现代框架与服务器控件(如__EVENTTARGET、ScriptManager)的生命周期冲突,保障系统稳定性与用户操作连续性。典型应用场景包括政企老旧合同管理、医保/公积金业务中台、高校教务系统等需长期维护且终端环境受限(IE8+/Chrome45)的生产环境。本文聚焦

clugcpne10995的博客 366

document.getElementById获取控件对象为空的解决方法

1.下面是一个简单的例子,面加载时显示一段信息 代码如下:<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”><html>  <head>      [removed]          alert(“hello!!!”);      [removed]  </head>  <body onLoad=”showMessage()”>     

ASP.NET WebForms面性能优化实战:ViewState瘦身、Repeater替代与AJAX并行化

WebForms是微软经典的ASP.NET服务端渲染框架,其控件生命周期、ViewState机制和PostBack模型在现代高并发场景下易成性能瓶颈。本文从原理出发,解析ViewState序列化开销大、GridView渲染路径冗长、AJAX串行请求阻塞等核心问题,揭示其如何导致首屏加载超2秒、IIS线程池频繁饱和等典型故障。通过精准控制ViewState生命周期、用轻量Repeater替代重型服务端控件、实施前端Fetch并行+后端CancellationToken熔断,实现服务端渲染耗时压降至340ms以

diaozhiwa5526的博客 424

Javascript 操作DOM属性

Javascript 操作DOM属性,操作DOM属性来更改Css样式来达到一个简单的交互效果

qq_40468450的博客 598

document.getElementById()方法使用

document.getElementById使用 语法:oElement = document .getElementById ( sID ) 参数:sID――必选项。字符串 (String) 。 返回值:oElemen――对象 (Element) 。 说明:根据指定的 id 属性值得到对象。返回 id 属性值等于 sID 的第一个对象的引用。假如对应的为一组对象,则返回该组对象中的第一

酣睡的熊㊣的技术博客 36万+

document.getElementByclassName()方法

document.getElementByclassName()方法;使用指定的calss属性值返回相关元素的集合(节点列表)使用getElementByclassName()方法,使用指定的calss属性值(名称)返回当前文档中所有相关元素的集合(节点列表对象)。节点列表对象代表了收集到的所有相关节点,可以使用序列号(index)访问节点列表,index的值从0开始。注:使用节点列表对象的len...

boat_sea的博客 24万+

创建母版导致js出现“ 'document.getElementById(...)' 为空或不是对象”错误

导读:一个控件在设计时的ID往往不同于生成面后的ID,为了获得控件客户端ID,我们可以从生成的面入手,冷静思考,把握主次,从底层框架入手 本文将为大家介绍一下 ASP.NET中在创建母版时引来的麻烦,并分析了问题产生的实质,大家在实际操作中多多注意一下。   一、问题提出   由于总体排版和设计的需要,我们往往创建母版来实现整个网站的统一性,最近我由于统一性的需要,把原...

weixin_30527551的博客 181

前端大佬们都在使用的JavaScript工具函数宝典-内含95个工具函数方法

本文汇总了97个实用的JavaScript函数,涵盖字符串处理、日期格式化、DOM操作、数据校验、编码转换等常见场景。主要包括:1. 基础工具类(HTML转义、URL参数获取、Cookie操作等)2. DOM相关(事件绑定、元素操作、滚动控制等)3. 数据类型校验(数字、手机号、邮箱、身份证等)4. 字符串处理(截取、转换、清除特定字符等)5. 数学计算(金额大写转换、随机数生成等)6. 浏览器特性检测(移动设备判断、触摸屏检测等)7. 格式化函数(日期、货币千分位等)这些函数经过优化封装,可直接用于项目开

JackieDYH的博客 4449

JavaScript 从入门到实战:Web 开发第一语言完全教程

JavaScript 从入门到实战:Web 开发第一语言完全教程

夏老师讲鸿蒙 223

js面试题收集

js面试题整理 链接 H5 新特性 50个css面试题 css优化,js优化以及web性能优化 js面试题知识点全解(一原型和原型链) 如何实现浏览器内多个标签之间的通信? (阿里) WebSocket、SharedWorker; 也可以调用localstorge、cookies等本地存储方式; localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件, 我们通过监听...

weixin_44218695的博客 372

ASP.NET Core SignalR入门:从零实现广播、群组与私聊实时通信

实时通信是现代Web应用的核心需求,它允许服务端主动向客户端推送数据,无需客户端轮询。其底层原理通常基于WebSocket协议,该协议在TCP连接之上提供了全双工通信能力,相比传统的HTTP请求-响应模式,显著降低了延迟和网络开销。这项技术的核心价值在于能够构建高度交互式的应用,如在线聊天、实时数据可视化、协同编辑和游戏等。在.NET技术栈中,ASP.NET Core SignalR作为官方实时通信库,通过Hub抽象层封装了连接管理、协议协商和消息路由等复杂细节,让开发者能够以简单的RPC模型快速实现双向通

weixin_34198762的博客 491

.NET网站集成记忆系统:ElBruno.MempalaceNet实战与优化

在Web开发中,状态管理与用户偏好持久化是提升用户体验的关键技术。其核心原理是通过在服务器端安全存储用户特定的数据,实现跨会话的个性化体验。这项技术的价值在于它能显著减少用户重复操作,提升应用粘性,常见于电商推荐、工具设置记忆等场景。本文以热门的.NET Core技术栈为例,深入探讨如何利用ElBruno.MempalaceNet这一专门库,为网站注入“记忆”能力。该库基于“记忆宫殿”的抽象概念,提供了结构化的存储模型,并支持Redis等分布式缓存后端,便于在生产环境中实现高性能、可扩展的记忆系统。文章将结

weixin_34067102的博客 391

ASP.NET Web Forms核心原理:面生命周期与ViewState机制解析

Web开发中,服务端渲染与状态管理是理解HTTP无状态本质的关键入口。ASP.NET Web Forms作为早期成熟的事件驱动模型,其面生命周期、ViewState序列化、PostBack机制等设计,深刻体现了在无状态协议上构建有状态交互的工程智慧。它虽已非主流,但其控件树管理、服务端事件绑定、视图状态同步等思想,持续影响着Blazor Server、低代码平台乃至现代SSR框架的状态同步逻辑。掌握Page.IsPostBack判定条件、ViewState二进制序列化原理及ClientID生成规则,不仅能

diaozhiwa5526的博客 392

纯前端JavaScript实现眼镜虚拟试戴:人脸检测+WebGL实时渲染

虚拟试戴(virtual try-on)是一种基于计算机视觉与3D图形学的交互技术,其核心原理是通过人脸检测定位关键点,结合三维姿态估计与几何适配算法,将数字商品精准叠加至用户实时视频流中。该技术具备零隐私风险、低延迟、跨平台部署等工程价值,广泛应用于电商眼镜选购、远程验光服务及AR营销场景。本文聚焦纯前端实现路径,以JavaScript为开发语言,依托MediaPipe轻量人脸模型与原生WebGL渲染管线,在不依赖服务器、不上传图像的前提下,达成60fps稳定运行与毫米级镜框贴合精度,是Web端实时视觉处

weixin_30367873的博客 304

[html-1]巨量小技巧,网冷知识,HTML巧办法,巧妙运用html+css+js,大量各种js源码,制作网临时用到的素材,其它技巧备忘,积累的经验和技巧,方便使用,便于复制。Java代码存放。

两种代码功能一样:创建style并注入css。

2301_81608124的博客 526

WinForm嵌入网实战:WebView2/CefSharp/WebBrowser选型与避坑指南

WinForm嵌入网是桌面应用现代化的关键技术,本质是在进程隔离、线程模型与安全沙箱约束下实现Web与.NET的双向通信。其核心原理涉及WebView渲染引擎集成、JS-C#互操作机制及本地资源加载策略。该技术显著提升遗留系统交互体验,支撑ERP报表集成、H5人脸授权、Vue后台嵌套等典型场景。本文聚焦WebView2主流方案,结合CefSharp对比与WebBrowser兼容性分析,深入解析消息通信、跨域处理、摄像头调用与内存泄漏防控等工程难点,提供可直接复用的生产级配置模板

SailingAptech的专栏 469

Unity WebGL与JS通信内存泄露:根源剖析与系统性解决方案

在Web开发中,内存管理是保障应用性能与稳定性的核心基础。其原理在于垃圾回收机制自动释放不再使用的内存,防止内存泄漏导致应用卡顿或崩溃。对于结合WebAssembly与JavaScript的混合应用,跨语言交互的技术价值尤为突出,它能充分发挥各自优势,构建高性能的网应用。然而,在Unity WebGL这类特定应用场景中,C#(托管代码)与JavaScript(非托管代码)之间的频繁通信,极易因双向引用而形成垃圾回收无法处理的闭环,成为隐蔽的内存“隐形杀手”。这常由未清理的事件监听器、持久的异步操作回调等高

benben 426
上一篇: mysql 修改密码忘记使用password函数导致后面无法连接,解决方法记录
lan_security
博客等级 码龄11年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值