慎用客户端的disabled属性......

由于表单的修改由两种用户操作,分别能修改的项是不一样的,但都可以查看。
设想实现一个修改方法,两种用户修改保存后都调用这个方法作保存操作,然后在客户端判断不同的用户然后把部分控件disabled掉。结果出现在客户端disabled掉的控件在服务器端得到的值为""的问题了,刚开始不解,写了个测试程序也是这样的,想来想去,可能是disabled后控件的viewstate也不可用了,所以在服务器端就得不到其值了。测试代码如下:
//服务器
private void Page_Load(object sender, System.EventArgs e)
        
{
            
if(!IsPostBack)
            
{
                
this.TextBox1.Text = "guoguo";
            }

        }

private void Button1_Click(object sender, System.EventArgs e)
        
{
            Response.Write(
"<script>alert('"+this.TextBox1.Text +"')</script>");
        }

//客户端
<script language=javascript>
          function window_load()
          
{
              Form1.TextBox1.disabled 
= true;
          }

        
</script>
<body MS_POSITIONING="GridLayout" onload="window_load();">

点击按钮得到的是""值。

解决办法:把客户端的禁用功能放到服务器端实现就可以了。
在page_load()中加入
this.TextBox1.Enabled = false;
除掉客户端的onload="window_load();"就可以了。
**************************************
可能许多人早就知道了,但我确实是今天才发现了,费了我不少霎时间。平时做页面好少,
都是写中间层代码,感觉asp.net还不熟。

posted on 2004-11-30 21:56  蝈蝈  阅读(718)  评论(0编辑  收藏  举报