这篇是集合在写asp.net程序中碰到的各种问题集合。平时遇到的问题慢慢累积在这儿,以后碰到时,有个印象,也好到这儿来寻找解答。

目录

a. 在母板页中,为什么刷新后使用Request.params取不到控件中的值

1.在母板页中,为什么刷新后使用Request.params取不到控件中的值

今天碰到一个很奇怪的现象,在一个如下的母板页中:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    <asp:Button ID="Button2" runat="server" Text="Button" /> 
    <asp:Label ID="Label1" runat="server" ForeColor="#CCFFCC" Text="BBB"></asp:Label> 
    <asp:TextBox ID="TextBox1" runat="server" Text="bbb"></asp:TextBox> 
</asp:Content> 

然后在Page_load函数中编辑如下代码:

protected void Page_Load(object sender, EventArgs e) 

     Label1.Text = Request.Params["TextBox1"]; 

按照理解,在点击Button后,Label1会显示TextBox1中的值。但是结果什么也没有。原因是:

MSDN解释:任何实现该接口的控件都创建一个新的命名空间,在这个新的命名空间中,所有子控件 ID 属性在整个应用程序内保证是唯一的。由该接口提供的标记允许在支持数据绑定的 Web 服务器控件内唯一命名动态生成的服务器控件实例。这些控件包括 Repeater、DataGrid、DataList、CheckBoxList、ChangePassword、LoginView、Menu、SiteMapNodeItem 及 RadioButtonList 控件。
其它解释: 
   .Request.Form根据ClientID获取值,而不是ID。嵌套在Repeater或者FormView这类控件里面,ClientID是自身ID加上容器控件的ID作为前缀,因此不同于ID本身。  
   .因为嵌套了容器控件,所以在Page级别进行FindControl也是找不到的,你要在容器控件上做FindControl。 

上面的例子应该修改成:

protected void Page_Load(object sender, EventArgs e) 

    TextBox tb = (TextBox)Page.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1"); 
    Label1.Text = tb.Text; 

当然,以上针对服务器控件来看,好像是多余了,直接使用Label1.Text = TextBox1.Text就可以了。
    但是,如果是HTML控件,这样就比较有效果了。比如:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
            <input type=hidden id="Dynamic_UserControl_Hidden1" runat="server" />   // HTML控件 
            <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" OnClientClick="ShowControl()" /> 
        </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:Content> 

以上,在页面刷新后想取得Dynamic_UserControl_Hidden1中的值,可以这样:

protected void Page_Load(object sender, EventArgs e) 

    // 嵌套容器,在容器上做FindControl 
    HtmlInputHidden hiHidden = (HtmlInputHidden)UpdatePanel1.ContentTemplateContainer.FindControl("Dynamic_UserControl_Hidden1"); 
    Label1.Text = hiHidden.Value; 

然后,还有一个就是javascript的问题:
    在脚本中使用以下语句会得到"为空或不是对象"的错误
       document.getElementById("TextBox1").value
    主要原因也是因为在生成页面后,控件的ID被变掉了。可以使用以下语句
       document.getElementById("<%=TextBox1.ClientId%>”).value;
    具体的,可以查询以下几个URL:
        http://www.itstrike.cn/Home/Article/Asp.net-in-the-master-page-ID-of-the-control-treatment
        http://topic.csdn.net/u/20080503/18/205102e1-7f6c-4858-970e-f7b9ce390b0e.html
        http://msdn.microsoft.com/zh-cn/library/system.web.ui.inamingcontainer%28VS.85%29.aspx

asp.net问题点集合相关推荐

  1. asp动态树菜单集合(3/3)

    <!--三级树,同时展开多个子菜单的--> 数据库结构详见 http://blog.csdn.net/piperzero/archive/2006/07/25/977083.aspx &l ...

  2. ASP.NET报错集合一----.net4.0创建项目后,在iis上部署项目,无法浏览,提示404

    前言:这些错误纯属自己在开发项目的时候遇到的问题,比较有针对性.如果有解决不了的问题,请勿喷. 问题描述: .net4.0创建项目后,在iis上部署项目,无法浏览,提示404 搭建项目的环境: 项目是 ...

  3. 组件开发之Asp.net服务器控件Collection[集合]属性的设计时支持--编辑、保存

    制作服务器控件的时候,很多时候要用的集合属性(Collection Property),我将自己开发中学到的一些知识点总结一下,可能对初学控件开发的人会有些帮助.     如果你开发过控件,一定知道, ...

  4. ASP.NET控件集合

    文章目录 前言 一.控件分类 1.HTML控件 2.HTML服务器控件 3.ASP.NET服务器控件 4.用户控件和自定义控件 二.HTML控件和ASP.NET服务器控件 1.HTML控件 2.ASP ...

  5. [导入]Asp.Net小技巧集合

    1.以前的类库里想使用Web的Response和Request对象时都会使用HttpContext.Current.Response和HttpContext.Current.Request来操作.但对 ...

  6. ASP.NET Razor – C# 循环和数组简介

    如果需要重复执行相同的语句,可以设定一个循环.需要存储多个相似变量但又不想为每个变量都创建一个独立的变量时,可以使用数组来存储. For 循环 如果您需要重复执行相同的语句,您可以设定一个循环. 如果 ...

  7. ASP.NET状态管理

    第一部分:页面状态介绍 Http协议----"无状态协议" Web服务器每分钟对上千个用户进行管理的一种方式就是执行所谓的"无状态"链接.只要有一个希望浏览器返 ...

  8. 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程

    ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...

  9. 什么是ASP?教你如何学ASP编程

    Active Server Pages(ASP,活动服务器页面)就是一个编程环境,在其中,可以混合使用HTML.脚本语言以及组件来创建服务器端功能强大的Internet应用程序. 如果你以前创建过一个 ...

最新文章

  1. java进销存培训_Java实例学习——企业进销存管理系统(2)
  2. windows操作系统自带的TCP端口转发
  3. S1 商品信息管理系统
  4. linq TO XML 基础
  5. BZOJ1444: [Jsoi2009]有趣的游戏(Trie图,矩乘)
  6. 单元测试(三)基本使用
  7. Python之进程+线程+协程(multiprocessing多进程模块)
  8. 8皇后问题--回溯法 (循环递归)
  9. 华为平板 鸿蒙2.0,华为鸿蒙2.0支持型号有哪些
  10. ps总结(一)-无失真的放大图片
  11. 粒子滤波 python,粒子滤波器基本原理.ppt.ppt
  12. filco的pin码_Filco圣手二代双模蓝牙机械键盘连接方法
  13. PAT_乙级_1004_筱筱
  14. html复习第七天 京东首页布局完成
  15. 网站关键词优化该怎么做?
  16. SDK、API、MDK、RTK有关系吗?到底是什么东西呢?
  17. element表格固定某一行_element 表格固定列
  18. deepin激活SCRT
  19. 洛谷-P1010-幂次方-普及(摁写+递归/二进制+递归)
  20. 如何给PDF文件添加自定义图章的方法

热门文章

  1. PAT甲级 1003 Dijkstra的口诀干货
  2. perl cgi session php,如何使用Perl中的CGI :: Session处理Web会话?
  3. 改进的EfficientNet-B4用于黑色素瘤检测
  4. 玉米叶片病害识别与分类的优化密集卷积神经网络模型
  5. solr4 mysql自动更新_solr7.4 定时增量更新数据-Go语言中文社区
  6. 《用python写网络爬虫》完整版+源码
  7. 15天掌握Al声纹识别,同盾开启智能风控建模赛训
  8. EasyPR--中文车牌识别系统 开发详解(开源)
  9. 用scikit-learn和pandas实现线性回归
  10. 计算机中丢失inetcomm,模块inetcomm.dll已加载,但找不到入口点DllRegisterServer