aspx中的代码:
<asp:HiddenField ID="hf0" Value="No Value" runat="server"/>
<asp:TextBox ID="TextBox0" runat="server"></asp:TextBox>
<asp:Label ID="Label0" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Validate" runat="server" Text="Validate" OnClick="Validate_Click"/>
C#中的代码:
protected void Validate_Click(object sender, EventArgs e)
{
// Set JavaScript
string myFn = "function Textbox0_validate(str) {"
+ "if (str.length < 5) { return 'Invalid, at least 5 chars!';} return 'Passed';}"
+ "function validateAll() {document.getElementById('hf0').value =Textbox0_validate('"+ TextBox0.Text +"');}";
Page.Header.Controls.Add(new LiteralControl("<script type='text/javascript'>" + myFn + "</script>"));
// Start JavaScript
Page.ClientScript.RegisterStartupScript(GetType(), "validateAll", "validateAll();", true);
// Read results
Label0.Text = hf0.Value;
}
目的是功能&#39; Textbox0_validate&#39;是否可以验证&#39; Textbox0&#39;中的文字。因此,当我点击按钮时,&#39; Label0&#39;应该显示验证的结果。(通过,或无效....)我想要动态,这就是为什么我从后面的代码添加这些JavaScript。 (另外,我不想使用RegEx)
代码的问题是,当我点击按钮&#39;验证&#39;时,它不会更新&#39; hf0&#39;的值。然而;如果我第二次点击它,第一次的结果将显示出来。所以基本上,我需要点击两次按钮才能得到我想要的验证结果。我猜PostBack有一些问题,请帮忙。
答案 0 :(得分:0)
好吧,我有点解决了我的问题。
我在Label0.Text = hf0.Value
中添加了Page_Load
。然后在JavaScript中,我添加了__doPostBack('','');
因此,在JavaScript完成后,它将回发,并且值将在Page_Load
中更新。