肃宁一中艺术节
当前位置:肃宁一中艺术节 > Web开发 > ASP.NET > 正文  |  快速导航:ASP PHP JSP ASP.NET JavaScript JQuery Extjs Ajax Silverlight Flex WebService WCF prototype mootools Dojo
  • 罗田王燕:ASP.NET后台获取不了只读TextBox的值

  • 字号:[ ]2014-1-11 14:43:50  阅读:117次  来源:乐猪网  编辑:银河精灵  收藏
  • 摘要:今天在编写代码的时候发现一个很奇怪的问题,就是把TextBox设置为只读属性之后,在ASP.NET后台代码中获取不到值,之前很真没有发现过这样的问题。经过仔细研究,终于明白是什么原因导致的!
  • 肃宁一中艺术节 www.sdaiyun.cn     如果 TextBox 中设置了 ReadOnly="true" 之后,然后通过 JavaScript 脚本给 TextBox 赋值,在后台通过 TextBox.Text 获取到的值是空的,我想这样是因为涉及到安全上的考虑吧!

        可能你会问,如果确实有这种情况该怎么解决呢?事后,笔者做了一些测试,找到了几种解决方案,下面分别对 ReadOnly 和 Enabled 两个种属性进行测试,因为它们都可以实现只读的效果,准确来说 Enabled 不算是只读,应该把它称之为“不可用”好点。

    前台代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="后台获取不了只读TextBox的值.aspx.cs" Inherits="MyNet.疑难杂症.ASPNET.后台获取不了只读TextBox的值" %> 
      
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
      
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
        <title>后台获取不了只读TextBox的值</title> 
        <script type="text/javascript"> 
            window.onload = function() { 
                var objT3 = document.getElementById("TextBox3"); 
                var objT4 = document.getElementById("TextBox4"); 
                var objT5 = document.getElementById("TextBox5"); 
                var objT6 = document.getElementById("TextBox6"); 
                var objT7 = document.getElementById("TextBox7"); 
                var objT8 = document.getElementById("TextBox8"); 
                objT3.value = "Value3"; 
                objT4.value = "Value4"; 
                objT5.value = "Value5"; 
                objT6.value = "Value6"; 
                objT7.value = "Value7"; 
                objT8.value = "Value8"; 
            } 
        </script> 
    </head> 
    <body> 
        <form id="form1" runat="server"> 
        <div> 
            <font style="font-size:20px;">==== 测试一,后台赋值 ====</font><br /> 
            ReadOnly:<asp:TextBox ID="TextBox1" runat="server" Text="Value1" ReadOnly="true"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label1" runat="server"></asp:Label> 
            <br /> 
            &nbsp;&nbsp;&nbsp;Enabled:<asp:TextBox ID="TextBox2" runat="server" Text="Value2" Enabled="false"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label2" runat="server"></asp:Label> 
              
            <br /><br /> 
            <font style="font-size:20px;">==== 测试二,前台赋值 ====</font><br /> 
            ReadOnly:<asp:TextBox ID="TextBox3" runat="server" ReadOnly="true"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label3" runat="server"></asp:Label> 
            <br /> 
            &nbsp;&nbsp;&nbsp;Enabled:<asp:TextBox ID="TextBox4" runat="server" Enabled="false"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label4" runat="server"></asp:Label> 
              
            <br /><br /> 
            <font style="font-size:20px;">==== 测试三,前台赋值 ====</font><br /> 
            ReadOnly:<asp:TextBox ID="TextBox5" runat="server" ReadOnly="true"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label5" runat="server"></asp:Label> 
            <br /> 
            &nbsp;&nbsp;&nbsp;Enabled:<asp:TextBox ID="TextBox6" runat="server" Enabled="false"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label6" runat="server"></asp:Label> 
              
            <br /><br /> 
            <font style="font-size:20px;">==== 测试四,前台赋值 ====</font><br /> 
            ReadOnly:<asp:TextBox ID="TextBox7" runat="server"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label7" runat="server"></asp:Label> 
            <br /> 
            &nbsp;&nbsp;&nbsp;Enabled:<asp:TextBox ID="TextBox8" runat="server"></asp:TextBox><br /> 
            &nbsp;&nbsp;&nbsp;&nbsp;获取值:<asp:Label ID="Label8" runat="server"></asp:Label> 
              
            <br /><br /> 
            <asp:Button ID="btnSave" runat="server" Text="提交" onclick="btnSave_Click" /> 
        </div> 
        </form> 
    </body> 
    </html>

    后台代码:

    using System; 
    using System.Collections; 
    using System.Configuration; 
    using System.Data; 
    using System.Linq; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.UI.HtmlControls; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    using System.Xml.Linq; 
      
    namespace MyNet.疑难杂症.ASPNET 
    { 
        public partial class 后台获取不了只读TextBox的值 : System.Web.UI.Page 
        { 
            protected void Page_Load(object sender, EventArgs e) 
            { 
                TextBox7.Attributes.Add("readonly", "readonly"); 
                TextBox8.Attributes.Add("disabled", "disabled"); 
            } 
      
            protected void btnSave_Click(object sender, EventArgs e) 
            { 
                //测试一 
                string value1 = TextBox1.Text; 
                if (!string.IsNullOrEmpty(value1)) 
                { 
                    Label1.Text = value1; 
                } 
                else
                { 
                    Label1.Text = "获取不到值.."; 
                } 
                string value2 = TextBox2.Text; 
                if (!string.IsNullOrEmpty(value2)) 
                { 
                    Label2.Text = value2; 
                } 
                else
                { 
                    Label2.Text = "获取不到值.."; 
                } 
                //测试二 
                string value3 = TextBox3.Text; 
                if (!string.IsNullOrEmpty(value3)) 
                { 
                    Label3.Text = value3; 
                } 
                else
                { 
                    Label3.Text = "获取不到值.."; 
                } 
                string value4 = TextBox4.Text; 
                if (!string.IsNullOrEmpty(value4)) 
                { 
                    Label4.Text = value4; 
                } 
                else
                { 
                    Label4.Text = "获取不到值.."; 
                } 
                //测试三 
                if (HttpContext.Current.Request.Form["TextBox5"] != null) 
                { 
                    string value5 = HttpContext.Current.Request.Form["TextBox5"].ToString(); 
                    if (!string.IsNullOrEmpty(value5)) 
                    { 
                        Label5.Text = value5; 
                    } 
                    else
                    { 
                        Label5.Text = "获取不到值.."; 
                    } 
                } 
                else
                { 
                    Label5.Text = "获取控件失败.."; 
                } 
                if (HttpContext.Current.Request.Form["TextBox6"] != null) 
                { 
                    string value6 = HttpContext.Current.Request.Form["TextBox6"].ToString(); 
                    if (!string.IsNullOrEmpty(value6)) 
                    { 
                        Label6.Text = value6; 
                    } 
                    else
                    { 
                        Label6.Text = "获取不到值.."; 
                    } 
                } 
                else
                { 
                    Label6.Text = "获取控件失败.."; 
                } 
                //测试四 
                string value7 = TextBox7.Text; 
                if (!string.IsNullOrEmpty(value7)) 
                { 
                    Label7.Text = value7; 
                } 
                else
                { 
                    Label7.Text = "获取不到值.."; 
                } 
                string value8 = TextBox8.Text; 
                if (!string.IsNullOrEmpty(value8)) 
                { 
                    Label8.Text = value8; 
                } 
                else
                { 
                    Label8.Text = "获取不到值.."; 
                } 
            } 
        } 
    }

    总结:
        测试一,TextBox1 和 TextBox2 设置了默认值,后台通过 TextBox.Text 获取值是正常的!
        测试二,TextBox3 和 TextBox4 通过 JS 赋值,后台通过 TextBox.Text 获取的值是空的!
        测试三,TextBox5 和 TextBox6 通过 JS 赋值,后台通过 Request.Form["TextBox"] 这方式获取值,ReadOnly 属性可以,Enabled 属性不可以。
        测试四,TextBox7 和 TextBox8 通过代码 TextBox.Attributes.Add 设置只读属性,然后通过 JS 赋值,再在后台使用 TextBox.Text 获取值,ReadOnly 属性可以,Enabled 属性不可以。

  • 顶一下
    (0)
    0%
    踩一下
    (0)
    0%
肃宁一中艺术节 版权所有 Copyright © 2012-2015 www.sdaiyun.cn All rights reserved.
本站用于学习交流,部分文章来源于网络,如果不慎侵犯了您的权益,请联系我们删除!
粤ICP备12000837号
武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 中国科学家研制出新型类脑计算芯片_男生女生金版 2019-10-17
  • 湖北省最大单体新华书店落户黄冈_263聊天 2019-10-17
  • 报告:中国内地金融科技采纳率高达87% 持续领跑全球_鑫泉方酒 2019-10-17
  • 借力冬奥 张家口从“菜地”变“滑雪胜地”_演员证 2019-10-16
  • 2019第四届中国迁安国际山地越野马拉松成功举行_赤字增加的时期是 2019-10-16
  • 南宫市西乞村:“空心村”变形记_康逸琨男友华汉 2019-10-16
  • 持续拓展全球伙伴关系网络_华通医药中签号 2019-10-16
  • 浅谈机器人的研究与发展_与美男群居的日子 2019-10-16
  • “经济身份证” 升级出新招(经济聚焦)_jc教你学跳舞nuabo 2019-10-16
  • 铜梁区职教中心龙舞社团斩获中职组一等奖_王伟准备用一段长30米 2019-10-15
  • 广州警企联手织密“反诈防护网”_庄立帆 2019-10-15
  • 【视频】巴拿马总统宣布同中国建交:世界上只有一个中国!_折星星的方法 2019-10-15
  • 军运会游泳测试赛在武汉体育中心开幕 黄冈新闻网_黑道成王 2019-10-14
  • 群众办事百项堵点疏解行动——第二季投票结果_怀柔板栗 2019-10-14
  • 一人有难 众台胞相助_合肥澳门豆捞团购 2019-09-28
  • 武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 中国科学家研制出新型类脑计算芯片_男生女生金版 2019-10-17
  • 湖北省最大单体新华书店落户黄冈_263聊天 2019-10-17
  • 报告:中国内地金融科技采纳率高达87% 持续领跑全球_鑫泉方酒 2019-10-17
  • 借力冬奥 张家口从“菜地”变“滑雪胜地”_演员证 2019-10-16
  • 2019第四届中国迁安国际山地越野马拉松成功举行_赤字增加的时期是 2019-10-16
  • 南宫市西乞村:“空心村”变形记_康逸琨男友华汉 2019-10-16
  • 持续拓展全球伙伴关系网络_华通医药中签号 2019-10-16
  • 浅谈机器人的研究与发展_与美男群居的日子 2019-10-16
  • “经济身份证” 升级出新招(经济聚焦)_jc教你学跳舞nuabo 2019-10-16
  • 铜梁区职教中心龙舞社团斩获中职组一等奖_王伟准备用一段长30米 2019-10-15
  • 广州警企联手织密“反诈防护网”_庄立帆 2019-10-15
  • 【视频】巴拿马总统宣布同中国建交:世界上只有一个中国!_折星星的方法 2019-10-15
  • 军运会游泳测试赛在武汉体育中心开幕 黄冈新闻网_黑道成王 2019-10-14
  • 群众办事百项堵点疏解行动——第二季投票结果_怀柔板栗 2019-10-14
  • 一人有难 众台胞相助_合肥澳门豆捞团购 2019-09-28