单击按钮后ASP.NET JavaScript返回

时间:2016-08-04 14:29:47

标签: javascript c# asp.net dynamic postback

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有一些问题,请帮忙。

1 个答案:

答案 0 :(得分:0)

好吧,我有点解决了我的问题。 我在Label0.Text = hf0.Value中添加了Page_Load。然后在JavaScript中,我添加了__doPostBack('','');因此,在JavaScript完成后,它将回发,并且值将在Page_Load中更新。

相关问题