• TextBox的Enable和ReadOnly属性的限制


    在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制。这是为了提高应用程序安全性所考虑的。下面就是TextBox控件获得数据的内部方法,由此可以看出ReadOnly的限制:
    protected virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
    {
     base.ValidateEvent(postDataKey);
     string text1 = this.Text;
     string text2 = postCollection[postDataKey];
     if (!this.ReadOnly && !text1.Equals(text2, StringComparison.Ordinal))
     {
      this.Text = text2;
      return true;
     }
     return false;
    }
      这里限制的只是Text属性,而没有限制提交数据的名称/值的NameValueCollection,因此,通过Request["表单名称"]的方法仍然可以得到值的。
      对于disabled的TextBox,在服务器端不能得到修改的值,如果实在要用这个属性,那之后使用隐藏表单域的方法来实现了。
      ReadOnly属性的TextBox在客户端会展现成这样的标记:
    <input readonly = "readonly">
      Enabled属性的TextBox在客户端会展现成这样的标记: <input >
      按照W3C的规范:http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.12
      设置为disabled的input将会有下面的限制:
       ·不能接收焦点 
       ·使用tab键时将被跳过 
       ·可能不是successful的
      设置为readonly的input将会有下面的限制:
       ·可以接收焦点但不能被修改 
       ·可以使用tab键进行导航 
       ·可能是successful的
      只有successful的表单元素才是有效数据,也即是可以进行提交。disabled和readonly的文本输入框只能通过脚本进行修改value属性。
        若想保留asp.net1.1中的ReadyOnly功能,只需在服务器端加入contentEditable属性并设为false;
        textBox.Attributes["contentEditable"] = "false";
  • 相关阅读:
    使用junit进行单元测试
    初学软件工程.
    初学软件工程
    寻医问药软件
    使用JUnit工具进行单元测试
    软件工程问题
    JUnit进行单元测试
    软件工程学习问题
    单元测试
    软件工程
  • 原文地址:https://www.cnblogs.com/jack-Star/p/3223413.html
Copyright © 2020-2023  润新知