在某些机器上的FileUpload.click()之后不执行PostBack

时间:2014-07-08 13:39:27

标签: c# javascript asp.net file-upload

我创建了一个WebControl。用于上传文件的按钮在哪里。

我创建了Button和FileUpload,如

private readonly Button button;
public DocumentUploadButton() {
    button = new Button();
    button.Click += this.ProcessClick;
    var panel = new Panel();
    panel.Controls.Add(button);
    var fileUpload = new FileUpload();
    fileUpload.ID = "fileUploadHidden";
    fileUpload.Attributes["style"] = "display:none";

    panel.Controls.Add(fileUpload);
    Controls.Add(panel);
}

private void ProcessClick(object sender, EventArgs e) {
    if (this.fileUpload.PostedFile != null &&  string.IsNullOrEmpty(this.fileUpload.PostedFile.FileName)) {
       // Upload file and handle it like ...
       this.fileUpload.SaveAs(....)
    }
}
在OnLoad中我附加了一个JavaScript函数:

protected override void OnLoad(EventArgs e) {
   this.button.Attributes.Add("onclick", "document.getElementById('fileUploadHidden').click();");
   base.OnLoad(e);
}

现在,当用户单击该按钮时,将调用FileUpload并显示FileChooseDialog。这很有效。但在此之后,Click-Handler ProcessFile()不会在某些客户机器上执行(我认为PostBack没有执行)。在我的开发人员 - 机器上,这工作正常。

有人可以帮助我,客户机器上会出现什么问题吗?

我们使用InternetExplorer。

1 个答案:

答案 0 :(得分:0)

可能是IE安全设置,至少在我过去的情况下。要求他们将网站添加到他们机器上的可信站点