TextBox的ReadOnly属性造成服务器端无法读取TextBox的值

如果TextBox服务器控件的ReadOnly属性设置为True,在服务器端将得不到TextBox服务器的值。这是为了安全性考虑,在服务器端不处理只读文本框。

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default8.aspx.cs" Inherits="Default8" %>

 

 

    TextBox控件的ReadOnly属性

   

   

        Ok

                   

   

   

 

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;

 

public partial class Default8 : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        Response.Write(TextBox1.Text);     }

}

 

当运行以上代码时,虽然客户端中TextBox1的值已经被修改,但在服务器端得到的仍然是“ok”.

要解决这个问题,需要在别的方法来实现,举例如下:

1、.newStyle1
        {
                       readonly:expression(this.readOnly=true);
        }

然后将就可以了。

2、(两者的区别在于定义input控件时没有直接定义其属性ReadOnly为true,而是在Page_Load()的方法里用Attributes.Add()来添加属性)。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default9.aspx.cs" Inherits="Default9" %>

 

 

    Untitled Page

   

   

    Ok 

       

       

   

   

 

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;

 

public partial class Default9 : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        TextBox1.Attributes.Add("readonly","true");

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

        Response.Write(TextBox1.Text);

    }

}

 

这大概是因为TextBox1.Attributes.Add("readonly","true");添加的是“客户端的readonly”吧

你可能感兴趣的:(textbox,服务器,button,server,xhtml,object)