【问题标题】:Unable to get property 'value' of FileUpload in a UserControl using javascript无法使用 javascript 在 UserControl 中获取 FileUpload 的属性“值”
【发布时间】:2014-11-26 07:22:23
【问题描述】:

我在母版页上包含一个 UserControl(带有 FileUpload),如下所示:

母版页

 <uc:uploadFiles ID="UC1" runat="server"/>

上传文件.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 引起的以下错误: 无法获取未定义或空引用的属性“值”。

我的猜测是 FileUpload 值是在整个页面呈现之前验证的,因为当我删除 UserControl 并将代码直接移动到 MasterPage 时,CustomValidator 工作正常。

我该如何解决这个问题?

【问题讨论】:

  • 你必须寻找生成的html。当您在浏览器中看到时,请确保控件的 id 保持不变。 stackoverflow.com/questions/10045419/…
  • 就像@dotnetstep所说的检查文件上传的id,myfile之前会有一个前缀

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


【解决方案1】:

您需要在document.getElementById 中使用.ClientID。因为当您在用户控制中使用它时, cotnrol id - myfile 可能会被重命名为其他名称,例如ct00_myfile,在这种情况下,如果您执行相同的 js 代码,它会给您 null。

您需要使用以下js代码。

var FileUpload_function = document.getElementById('&lt;%=myfile.ClientID %&gt;');

【讨论】:

    猜你喜欢
    • 2013-01-09
    • 2016-11-08
    • 1970-01-01
    • 2015-06-14
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多