Javascript不能从ASP调用.NET用户控制

Javascript is not being called from ASP.NET User Control

本文关键字:NET 用户 控制 调用 ASP 不能 Javascript      更新时间:2023-09-26

我转换了一个ASP。. NET页面DeleteUser.aspx到用户控件DeleteUser.ascx

aspx页面有一个简单的javascript函数,像这样:

function deleteConfirmation() {
    var xusername = document.getElementById('<%= txtusercn.ClientID %>').value;
    if (xusername != null && xusername != "") {
        var userTextBoxId = '<%= txtusercn.ClientID %>';
        var uname = document.getElementById(userTextBoxId).value;
        return confirm('Are you sure you want to delete ''' + uname + '''?');
    }
    else {
        alert('Please enter Usercn');
        return false
    }
}

现在,由于这被转换为用户控件,DeleteUser.ascx,我首先将此javascript代码移动到<head>标记中的包含aspx文件中。该页面抛出了一个异常,txtusercn不在包含aspx文件的范围内。

然后我将javascript函数移动到一个单独的javascript文件DeleteUser.js中,并从DeleteUser.ascx.cs中引用它,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    Page.ClientScript.RegisterClientScriptInclude(typeof(DeleteUser),"DeleteUserScript",@"../scripts/DeleteUser.js");
}

javascript函数没有在这里被调用,但是当我检查包含aspx文件的页面源时,我可以看到javascript函数被正确注册。

为什么在页面引用javascript文件DeleteUser.js之后javascript函数没有被调用


编辑:

这样调用函数:

<asp:Button ID="btndeleteusercn" runat="server" Text="Delete Usercn" OnClick="btndeleteusercn_Click" OnClientClick="return deleteConfirmation();" />

我猜,"<%= txtusercn。ClientID %>"必须创建JavaScript错误,因为服务器控件引用应该在相关控件存在的页面上。您应该通过参数将ControlID传递给函数,然后它应该工作。

function deleteConfirmation(ctrlID) {
var xusername = document.getElementById(ctrlID).value;
if (xusername != null && xusername != "") {
    var userTextBoxId = ctrlID;
    var uname = document.getElementById(userTextBoxId).value;
    return confirm('Are you sure you want to delete ''' + uname + '''?');
}
else {
    alert('Please enter Usercn');
    return false
}}

并通过从那里传递ID来调用from的方法。例如

deleteconconfirm ('ID of Control')

请尝试更新后的代码。

function deleteConfirmation() {
        var xusername = document.getElementById('<%= txtusercn.ClientID %>').value;
        if (xusername != null && xusername != "") {
            return confirm('Are you sure you want to delete ''' + xusername + '''?');
        }
        else {
            alert('Please enter Usercn');
            return false
        }
return true;
    }

文本框的客户端ID被渲染为DeleteUser1_txtusercn,所以我像这样改变了javascript,它工作了:

function deleteConfirmation() {
    var uname = document.getElementById('DeleteUser1_txtusercn').value;
    if (uname != null && uname != "") {
        return confirm('Are you sure you want to delete ''' + uname + '''?');
    }
    else {
        alert('Please enter UserCN');
        return false;
    }
}