有奇怪的问题。我有TextBox
的简单页面:
<asp:ScriptManager runat="server" />
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:TextBox ID="amountTextBox" runat="server" TextMode="Number" />
<asp:Button runat="server" Text="Confirm" OnClick="confirmButton_Click" />
</ContentTemplate>
</asp:UpdatePanel>
点击Button
后,我尝试获取TextBox
值:
public partial class test : Page {
protected void confirmButton_Click(object sender, EventArgs e) {
var answer = amountTextBox.Text;
}
}
但它是空的。如果我删除UpdatePanel
,我会设法获得该值。如果我离开UpdatePanel
并删除TextMode
属性,我会设法获得该值。但是为什么我TextBoxt
TextMode
Number
UpdatePanel
设置为{{1}}后才能{{1}}?
答案 0 :(得分:5)
它是a known issue,.NET 4.5 RTM中提供了一个修复程序。
描述
HTML5具有输入标记的新类型,例如type =&#34; number&#34;,即 需要让手机显示数字键盘而不是 文字键盘。在完成页面的完整回发时,它可以全部工作 浏览器。但是,如果我将这些放在网站上的更新面板上来做 部分回发,然后没有包含新的HTML输入类型 在那些浏览器的回发响应中 了解这些新类型(Safari / WebKit和Opera)。有用 正确地在IE8和Firefox 4中,但可能只是因为他们有 没有实现这些新类型,并回退到理解它 a type =&#34; text&#34;字段。
以下是此问题和解决方法的另一个问题:UpdatePanel with input type other than text in html5。