ASP.Net:Ajax注册问题

时间:2009-11-03 11:16:12

标签: asp.net ajax

我曾与ASP.Net: Ajax check for registration as a user?

合作

它有一些错误,我不明白:

1)一个文本框只能工作一次。如果第二次编辑文本框,则不会触发断点。为什么呢?

2)对于我的电子邮件,我有一个检查,没有重复,当有一个,应该设置一个错误面板可见,但它不显示。

        protected void txtEMail_TextChanged(object sender, EventArgs e)
    {
        Business.UserHandling uh = new Business.UserHandling();
        if (uh.CheckIfEmailExists(txtEMail.Text))
        {
            panelHelp.Visible = true;
            lblHelp.Text = "EMail existriert schon.";
        }
    }

2 个答案:

答案 0 :(得分:2)

当更新模式是有条件的

<asp:scriptmanager runat="server" id="sm1" />
<asp:updatepanel runat="server" id="up1" updatemode="Conditional"> // here the updatemode is conditional ...
<contenttemplate>
    <asp:textbox runat="server" id="tbUsername" autopostback="true" ontextchanged="tbUsername_TextChanged" />
    <asp:customvalidator runat="server" text="Email already used" id="cusValEmail" />
    <asp:textbox runat="server" id="tbPassword"  />
</contenttemplate>
</asp:updatepanel>

您需要致电

protected void txtEMail_TextChanged(object sender, EventArgs e)
{
    Business.UserHandling uh = new Business.UserHandling();
    if (uh.CheckIfEmailExists(txtEMail.Text))
    {
        panelHelp.Visible = true;
        lblHelp.Text = "EMail existriert schon.";
    }
    up1.Update(); // call to update the update panel "up1"
}

抱歉,我有点生疏,因为我使用过更新面板已经有一段时间了。

答案 1 :(得分:0)

更新面板更新后,您必须重新初始化其中的html元素上的javascript。

因此,在方法结束时,您可以添加:

protected void txtEMail_TextChanged(object sender, EventArgs e)
{
    Business.UserHandling uh = new Business.UserHandling();
    if (uh.CheckIfEmailExists(txtEMail.Text))
    {
        panelHelp.Visible = true;
        lblHelp.Text = "EMail existriert schon.";
    }
    // Re-init javascript
    ScriptManager.RegisterStartupScript(Type, String, "add onchange js here", Boolean);
}

请参阅http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerstartupscript.aspx