在ASP.NET C#中获取.ClientID的问题

Ben*_*ury 2 javascript asp.net ajax clientid

我在AJAX工具包的AsyncFileUpload的uploadError javascript函数中有以下内容:

function uploadError(sender, args) {
    document.getElementById("<%# uploadResult.ClientID %>").innerText = args.get_fileName(), "<span style='color:red;'>" + args.get_errorMessage() + "</span>";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,ClientID调用返回Null,因此javascript错误.

我还注意到,一旦页面加载,我的控件都没有通常的.NET格式:EG:

<asp:Label runat="server" Text="Select an image to upload it to this stock item...." ID="uploadResult" /> 
Run Code Online (Sandbox Code Playgroud)

通常会像这样呈现:

<span id="ctl00_ContentPlaceHolder1_uploadResult">Choose a webstock file to upload...</span>
Run Code Online (Sandbox Code Playgroud)

但是使用这个文件它呈现为:

<span id="uploadResult">Select an image to upload it to this stock item....</span>
Run Code Online (Sandbox Code Playgroud)

我认为这是同一个问题,但不知道为什么会发生这种情况.

Kel*_*sey 8

问题是您使用的<%#语法仅在绑定(evals)上执行.

您应该使用<%=将始终执行的语法.

例如:

function uploadError(sender, args)
{
    document.getElementById('<%= uploadResult.ClientID %>').innerText = 
        args.get_fileName() + "<span style='color:red;'>" + 
        args.get_errorMessage() + "</span>";
}
Run Code Online (Sandbox Code Playgroud)

有关asp.net内联语法的更多信息,请参考.

数据绑定语法

内联语法

编辑:请注意,如果不是拼写错误,,您在作业中innerText也会遇到问题.