为什么我的一个aspx TextBox值没有转移到我的C#代码中

本文关键字:我的 转移 代码 TextBox aspx 一个 为什么 | 更新日期: 2023-09-27 18:26:09

我有一个ASPX网络表单,它接受一些数据,只发送一封电子邮件。它已经工作了很多年,但我只是添加了一个新字段,我无法将Text值转移到编写电子邮件的c#代码中。

不同之处在于,新字段是通过jQuery/JSON查找填充的,并且是只读的。jQuery部分运行良好。

有问题的文本框:

<asp:TextBox ID="autoRegion" Width="30" ReadOnly="true" onfocus="this.blur();" TabIndex="-1" CssClass="disabledInput" Value="" runat="server" />    

工作文本框:

<asp:TextBox ID="FName" MaxLength="40" TabIndex="1" runat="server" />
<asp:TextBox ID="LName" MaxLength="40" TabIndex="3" runat="server" />

电子邮件正文内容的C#变量:

objMM.Body += "<table><tr><td>" + 
     LName.Text + "</td><td>" + FName.Text.ToUpper() + "</td><td>" +
     streetAddress1.Text + "</td><td>" + city.Text.ToUpper() + "</td><td>" +
     state.SelectedItem.Text + "</td><td>" + zip.Text + "</td><td>" + autoRegion.Text +
     "</td></tr></table>";

所有其他字段都在工作,但autoRegion.Text不工作。

我还尝试过用Request.Form["autoRegion"]填充一个变量,并使用该变量代替autoRegion.Text,但这也不起作用。

如有任何帮助,我们将不胜感激。

为什么我的一个aspx TextBox值没有转移到我的C#代码中

如果我没记错的话,只读项目不会将其值发布回服务器,因为没有任何原因,因为它们无法更改。

查看此链接:当通过javascript更改客户端值时,ASP.NET文本框在回发后丢失值。回发似乎只推送Disabled或ReadOnly的TextBox的ViewState数据。因为您是通过客户端加载值的,所以在ViewState中没有TextBox的任何内容。

有几种不同的工作,但我想尝试这个问题的答案:

protected void Page_Load(object sender, EventArgs e)
{
    TextBox1.Attributes.Add("readonly", "readonly");
}

除了应用此代码外,还需要从aspx页面的TextBox中删除ReadOnly="true"属性。

Mark Fitzpatrick是对的,问题是您将TextBox设置为ReadOnly,这意味着它的值不会在ViewState中持久化。

这里有一个潜在的解决方法:禁用的文本框丢失视图状态

编辑:使用HTML';readonly="只读";只读"';与JavaScript';element.readOnly=true';

您应该对进行一些更改

  1. 删除文本框中的只读属性,如下所示

    1. 此属性添加页面加载,如下所示protected void Page_Load(对象发送方,EventArgs e){autoRegion.Attributes.Add("只读","只读");}