C# VS JS之readonly的区别

C# VS JS之readonly的区别
在javascript中如果定义了一个input的readonly(假使默认值为:Jumbot Is Pig),那么只是阻止了用户编辑这个文本框,而用户可以通过javascript给其赋值(如改为Jumbot Is Sheep),那么表单提交后(get和post),取到的值仍然是Jumbot Is Sheep

然而,如果将服务器组件TextBox的Readonly属性改为True后,尽管你前台使用javascript改了它的值,提交后,获取到的Text仍然是之前的值...

郁闷:折腾了我半天,记录下来,以示警戒!!

PS:因为经常会在C#中使用ajax,然后对输入框的可读限制目的只是为了防止客户端用户输入,但还是允许程序自己通过javascript来赋值(如日期输入框,自动统计输入框),以前在ASP中不会遇到此问题,如今C#就不一样了。。。

所以以后尽量使用
Copy code
    protected void Page_Load(object sender, EventArgs e)
    {
        this.t1.Attributes.Add("readonly", "readonly");
    }


而不使用

Copy code
    protected void Page_Load(object sender, EventArgs e)
    {
        this.t1.ReadOnly = true;
    }



这是MS为安全考虑的,但是仍然可以通过 Request.From[TextBox1.UinqueID]取得脚本设置的数据,
如果ReadOnly=true的话,MS是使用记在ViewState的值
原文地址:https://www.cnblogs.com/wschacker/p/1230480.html