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

时间:2014-10-10 21:03:32

标签: c# asp.net

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

不同之处在于新字段是通过jQuery / JSON查找填充的,它是只读的。 jQuery部分工作正常。

有问题的TextBox:

<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,但这也不起作用。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果我没记错的话,只读项目没有将其值发回服务器,因为没有理由因为它们无法更改。

答案 1 :(得分:1)

点击此链接:ASP.NET textbox losing value after postback when value is changed client-side via javascript。看起来回发只推送了一个TextBox的ViewState数据,该TextBox是Disabled或ReadOnly。因为您是通过客户端加载值,所以ViewBox中没有任何内容可用于TextBox。

有几种不同的解决方法,但我会尝试回答question

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

除了应用此代码之外,您还需要删除ReadOnly =&#34; true&#34;来自aspx页面上TextBox的属性。

答案 2 :(得分:0)

Mark Fitzpatrick是对的,问题是你将TextBox设置为ReadOnly,这意味着它的值不会在ViewState中保留。

这是一个潜在的解决方法:Disabled textbox losses viewstate

修改:Strange behavior using HTML 'readonly="readonly"' vs. JavaScript 'element.readOnly = true;'

答案 3 :(得分:0)

你应该做一些改变

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

    1. 此主题添加页面加载,如下所示 protected void Page_Load(object sender,EventArgs e) { autoRegion.Attributes.Add(&#34;只读&#34;&#34;只读&#34); }