我有一个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
,但这也不起作用。
任何帮助都将不胜感激。
答案 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)
你应该做一些改变
删除文本框中的只读属性,如下所示