所以我对文件上传有一个ascx
控件。此控件在FileUpload
中有一个imagebutton
元素和一个table
,以及grid
在完成后显示上传的文件。
grid
和fileupload
+ imagebutton
table
不会同时显示。
imagebutton
的点击事件位于ascx.cs文件中:
public void btnUploadFile_Click(object sender, EventArgs e)
{
try
{
if (fileUpload.HasFile)
//if(!string.IsNullOrEmpty(fileUpload.FileName))
{
String fileName = fileUpload.FileName;// strPath.Substring(lastIndex + 1);
String ext = fileUpload.FileName.Split('.')[1];
Guid newFileName = Guid.NewGuid();
string strPath = MapPath("~/importfiles/") + newFileName.ToString() + "." + ext;
fileUpload.SaveAs(strPath);
LoadTable(fileName);
hfFilePath.Value = strPath;
hfFileName.Value = fileName;
hfMIMEType.Value = fileUpload.PostedFile.ContentType;
hfFileGUID.Value = newFileName.ToString();
hfFileUploaded.Value = "1";
}
else
{
grdAttachment.Visible = false;
filePickTable.Visible = true;
}
}
catch (Exception ex)
{
UserInterfaceExceptionHandler.HandleException(ref ex);
}
}
在内容页面上,我必须测试控件是否已经有文件,以便知道控件显示哪个视图(grid vs fileupload)。
if (attr.ImageValue != null)
{
//Do stuff to display grid instead of fileupload control
PostBackTrigger newTrigger = new PostBackTrigger();
newTrigger.ControlID = attrControl.ID;
IssueUpdatePanel.Triggers.Add(newTrigger);
}
else
{
(attrControl.FindControl("filePickTable") as Table).Width = new Unit("200px");
ImageButton btnUploadFile = attrControl.FindControl("btnUploadFile") as ImageButton;
AsyncPostBackTrigger newTrigger = new AsyncPostBackTrigger();
newTrigger.ControlID = btnUploadFile.ID;
newTrigger.EventName = "Click";
IssueUpdatePanel.Triggers.Add(newTrigger);
}
现在我遇到的问题是else
代码(对于没有文件的时候),我得到以下异常:
无法找到名为'点击'关联控制' btnUploadFile'对于UpdatePanel' IssueUpdatePanel'。
中的触发器
该页面有Timer
,每隔几秒就自动刷新一次页面。
我试着到处寻找解决方案,但无济于事。 希望我已经在这里提供了足够的信息。