无法获得物业价值'使用javascript在用户控件中的FileUpload

时间:2014-11-26 07:22:24

标签: javascript c# asp.net user-controls

我在主页面上包含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工作正常。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您需要在.ClientID中使用document.getElementById。当您在用户控件中使用它时,可以将cotnrol id - myfile重命名为其他内容,例如ct00_myfile,在这种情况下,如果执行相同的js代码,它将为您提供null。

您需要使用以下js代码。

var FileUpload_function = document.getElementById('<%=myfile.ClientID %>');