我在主页面上包含UserControl(包含FileUpload),如下所示:
母版页
<uc:uploadFiles ID="UC1" runat="server"/>
uploadFiles.ascx
<script type="text/javascript">
function ValidateUpload() {
var FileUpload_function = document.getElementById('myfile');
if (FileUpload_function.value == '') {
return false;
}
else {
//do stuff }
return true;
}
</script>
<div id="div_FileUpload" class="FileUpload_content" runat="server">
<asp:FileUpload ID="myfile" class="FileUpload" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="myfile" ClientValidationFunction="ValidateUpload" />
</div>
当我运行页面时,我收到CustomValidator引起的以下错误: 无法获得物业价值&#39;未定义或空引用。
我的猜测是在渲染整个页面之前验证了FileUpload值,因为当我删除UserControl并直接将代码移动到MasterPage时,CustomValidator工作正常。
我该如何解决这个问题?
答案 0 :(得分:1)
您需要在.ClientID
中使用document.getElementById
。当您在用户控件中使用它时,可以将cotnrol id - myfile重命名为其他内容,例如ct00_myfile
,在这种情况下,如果执行相同的js代码,它将为您提供null。
您需要使用以下js代码。
var FileUpload_function = document.getElementById('<%=myfile.ClientID %>');