问题越来越.ClientID在ASP.NET C#
我已经中的javascript uploadError时功能AsyncFileUpload从AJAX工具包以下:问题越来越.ClientID在ASP.NET C#
function uploadError(sender, args) {
document.getElementById("<%# uploadResult.ClientID %>").innerText = args.get_fileName(), "<span style='color:red;'>" + args.get_errorMessage() + "</span>";
}
不幸的是,ClientID
调用返回Null
,所以JavaScript错误。
我也注意到,没有我的控件具有通常的.NET格式一旦页面加载:EG:
<asp:Label runat="server" Text="Select an image to upload it to this stock item...." ID="uploadResult" />
通常会呈现这样的:
<span id="ctl00_ContentPlaceHolder1_uploadResult">Choose a webstock file to upload...</span>
但与此文件它呈现为:
<span id="uploadResult">Select an image to upload it to this stock item....</span>
我认为这是相同的问题,但不知道为什么它是happeni NG。
function uploadError(sender, args) {
document.getElementById("<%= uploadResult.ClientID %>").innerText = args.get_fileName(), "<span style='color:red;'>" + args.get_errorMessage() + "</span>";
尝试这样
不幸的是,这会导致“控件集合无法修改,因为控件包含代码块”错误。 –
组为您的客户ClientIDMode="Static"
或页面级别设置<%@ Page ClientIDMode="Static"
嗨,我正在运行.NET 3.5。如果我没有记错,这个4.0,不是吗? –
您可以ClientID的模式设置为静态的,或者你可以尝试使用的UniqueID代替的ClientID。
嗨,我正在使用ASP.NET 3.5,因此ClientIDMode不可用。 :( –
问题是您使用的<%#
语法仅在绑定(evals)上执行。
你应该使用<%=
将始终执行的语法。
如:
function uploadError(sender, args)
{
document.getElementById('<%= uploadResult.ClientID %>').innerText =
args.get_fileName() + "<span style='color:red;'>" +
args.get_errorMessage() + "</span>";
}
Reference for more information on asp.net inline syntax.
编辑:请注意,您在您的任务有,
到innerText
这也将是一个问题,如果它不是一个错字。
不幸的是,导致“控件集合无法修改,因为控件包含代码块”错误 –
@Ben Drury你在哪里/何时得到这个错误?可能需要更多的信息,因为它听起来像有其他东西你提供了什么导致这个问题,而不是我在答案的底部发布的问题,因为你似乎也有一个错字,可能会导致奇怪的副作用。 – Kelsey
ID建议不要强迫静态和限制自己的控件C#ASP范围,我宁愿建议转义特殊字符像这样
如果需要,可以把它放在一个循环,重复的每个功能elementsArr并将其更改为
document.getElementById('/</%= '+ elementsArr[x] +'.ClientID /%/>').innertext = "xyz or whatever";
但最好的办法是使用嘶嘶声(jQuery的)搜索具有开始ctl00一个ID的所有元素,ASP元素总是有ctl00默认前缀。
$("id^=ctl00").each(){
//使用这个函数调用的ID给一个变量,然后分裂的下划线(_)
//推上一个值到一个数组... 即最后一个项目之后的所有下划线永远是真正的ID。并使用这种方式嘶嘶声,你只能使用asp元素感谢真棒选择器它是大声笑 - 代码少,做更多。 });
我真的很为速记道歉,但它的延迟,我之前做过,它是我知道的最稳定的选项,你不会因修改标准细节而导致任何冲突。 (总是做不好)
不知道你是否复制粘贴,但检查在实际代码中runat =“server”是否有任何拼写错误。这似乎很好 –
还请确保你把完整的结束标记,如 –
所有的runat属性都很好,完整的结局似乎没有什么区别。 –