如果TextBox服务器控件的ReadOnly属性设置为True,在服务器端将得不到TextBox服务器的值。这是为了安全性考虑,在服务器端不处理只读文本框。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default8.aspx.cs" Inherits="Default8" %>
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" %>
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”吧