我在页面上有一个标签,当我在文本框中更改文本时,我正在更新标签的文本属性(带有计算值)。
我正在更新标签:
$myLabel.text("123");
文本正在屏幕上正确显示但是当我尝试将文本值保存到后面代码中的对象时(当我按下按钮时)标签的文本属性为“”而不是“123”。 / p>
代码背后:
var myLabel = myLabel.Text;
//the var myLabel is "" when it should be "123"
关于为什么会这样做的任何想法?
提前致谢,
的ZAP
答案 0 :(得分:3)
不确定这是否是正确的方法,但我通过使用隐藏字段解决了这个问题。
我更新了上面的标签文字:
$myLabel.text("hello");
但随后我更新了隐藏字段值:
$('#<%= hiddenField.ClientID %>').val("hello");
然后我可以在后面的代码中使用隐藏字段:
var myLabel = hiddenField.Value.ToString();
这似乎工作正常。
答案 1 :(得分:2)
为什么不检查在文本框中输入的值。根据您的描述,它应该是相同的,并且它将是可用的。否则,我认为你需要发布一些代码来澄清你在做什么。
标签文本的值需要存储在ViewState中,否则它将被按钮点击触发的回发覆盖。
一种选择是改变隐藏控件的值。对于此值的任何更改都将在回发后面的代码中提供。
<asp:Hidden id="hiddenLabel" runat="server" />
答案 2 :(得分:2)
标签,跨度,div等Html控件不会将其值发布到服务器 - 而输入则会。 ASP.NET使用 ViewState 维护控件的更改。
当您更改服务器控件的值时,它的状态通常会保留在那里。如果您通过JavaScript更改客户端上的值,则ViewState不会更改,这就是为什么在PostBack上您获得原始的Empty值。
答案 3 :(得分:0)
你在使用var myLabel = myLabel.Text;
做什么功能?
它在init函数中不起作用 - 您需要从viewstate中加载页面加载时间。最好的按钮推送事件处理程序。
更新
您需要使用表单输入控件(例如TextBox)而不是标签。标签是只读的。