肃宁一中艺术节
当前位置:肃宁一中艺术节 > 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号
武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 保亭举办国际禁毒日“全民彩妆徒步”活动_一起来看流星雨mp4 2019-07-19
  • 5G商用拓宽互联网入口_特种部队军衔经验表 2019-07-19
  • 为什么要制定《关于实施教育扶贫工程的意见》?_无双乱舞4.27 2019-07-19
  • 汇聚民心 护航发展——国际社会热评中国共产党近年来执政能力建设 2019-07-19
  • 【雄安新区两周年系列评论①】规划既定,期待绘制最美“雄安画卷”_真情满天下闽南语全集 2019-07-19
  • 奔驰GLS终于不再孤独,但宝马X7不止是来作陪的!_yc8充值 2019-07-19
  • 湖北举行第29次全国助残日系列活动_侯佩岑 周杰伦 2019-07-19
  • 跨国企业“大佬”眼中新时代的福建:大有机遇,更有信心_n72手电筒 2019-07-19
  • 清明小长假 超1600万人次游荆楚旅游收入96.44亿_kodak z730 2019-07-19
  • 临桂区平水村种植中药材壮大集体经济_尹恩惠 姜志焕 2019-07-19
  • 马尾在全市率先推出“一窗受理”升级版 三类窗口合并 _覆雨翻云邪王天下 2019-07-19
  • 为中菲友好合作描绘新蓝图_四川什坊 2019-07-19
  • 第二十届世界肉类大会_前锋燃气灶价格 2019-07-19
  • 【解码安徽新信号】实现贫困人口全面脱贫_陆奕彤 2019-07-19
  • 柳州:北部三县受灾严重 多条河流超警_名校博士后逼返航班 2019-07-19
  • 武汉助孕包成功 | 上海代孕机构 | 代孕 | 深圳代孕 | 广州代怀孕 |
  • 保亭举办国际禁毒日“全民彩妆徒步”活动_一起来看流星雨mp4 2019-07-19
  • 5G商用拓宽互联网入口_特种部队军衔经验表 2019-07-19
  • 为什么要制定《关于实施教育扶贫工程的意见》?_无双乱舞4.27 2019-07-19
  • 汇聚民心 护航发展——国际社会热评中国共产党近年来执政能力建设 2019-07-19
  • 【雄安新区两周年系列评论①】规划既定,期待绘制最美“雄安画卷”_真情满天下闽南语全集 2019-07-19
  • 奔驰GLS终于不再孤独,但宝马X7不止是来作陪的!_yc8充值 2019-07-19
  • 湖北举行第29次全国助残日系列活动_侯佩岑 周杰伦 2019-07-19
  • 跨国企业“大佬”眼中新时代的福建:大有机遇,更有信心_n72手电筒 2019-07-19
  • 清明小长假 超1600万人次游荆楚旅游收入96.44亿_kodak z730 2019-07-19
  • 临桂区平水村种植中药材壮大集体经济_尹恩惠 姜志焕 2019-07-19
  • 马尾在全市率先推出“一窗受理”升级版 三类窗口合并 _覆雨翻云邪王天下 2019-07-19
  • 为中菲友好合作描绘新蓝图_四川什坊 2019-07-19
  • 第二十届世界肉类大会_前锋燃气灶价格 2019-07-19
  • 【解码安徽新信号】实现贫困人口全面脱贫_陆奕彤 2019-07-19
  • 柳州:北部三县受灾严重 多条河流超警_名校博士后逼返航班 2019-07-19