2011-06-09 77 views
0

我在寫ImageUpload用戶控件的事件時遇到問題。用戶控制事件

我想添加一個事件,點擊圖片按鈕,在這種情況下,綠色確定按鈕。我爲事件編寫了一些代碼,但它在pageload()和postback上引發,因此它會導致一個問題 - >圖像上載後提供的圖像路徑在圖像上傳後變得清晰,但在頁面上刷新同一圖像時上傳一次又一次地刷新每一頁。

用戶控制代碼

public partial class Gallery_Controls_ImgUpload : System.Web.UI.UserControl 
{  
    protected void Page_Load(object sender, EventArgs e) 
    { } 

    public string TxtDesc  
    {   
     get {return txtimgdesc.Text;}   
     set { txtimgdesc.Text = value; } 
    }  
    public string TxtImgName  
    {   
     get { return txtimgname.Text; }   
     set { txtimgname.Text = value; }  
    }  
    public FileUpload ImgUpld  
    {   
     get { return ImgUpload; }   
     //set { ImgUpload = value; }  
    }  
    public string ImgAttr  
    {   
     get { return ImgUpload.Attributes["onchange"]; }   
     set { ImgUpload.Attributes["onchange"] = value; }  
    }  

    public event EventHandler ImgBtnUpClick;  
    protected void imgbtnok_Click(object sender,EventArgs e)  
    {   
     ImgBtnUpClick(ImgUpload, e);  
    } 

代碼頁添加控制和上傳文件

public partial class Gallery_iupload : System.Web.UI.Page 
{  
    ASP.gallery_controls_imgupload_ascx upctrl; 

    protected void Page_Load(object sender, EventArgs e)  
    { 
      upctrl = (ASP.gallery_controls_imgupload_ascx)LoadControl ("Controls/ImgUpload.ascx"); 
      upctrl.ImgBtnUpClick += new EventHandler(Upload); 
      upctrl.ImgAttr = "checkFileExtension(this); return false;"; 
      PlaceHolderupctrl.Controls.Add(upctrl);      
    } 
    protected void Upload(object sender, EventArgs e) 
    {   
     TextBox txtbximgname = (TextBox)upctrl.FindControl("txtimgname"); 
     TextBox txtbxdesc = (TextBox)upctrl.FindControl("txtimgdesc"); 
     FileUpload Imgload = (FileUpload)sender; 
     if (Imgload.HasFile) 
      try{ 
       Imgload.SaveAs("C:\\Uploads\\" + txtbximgname.Text + ".jpg");     
       Label1.Text = "File name: " + Imgload.PostedFile.FileName + "<br>" + 
       Imgload.PostedFile.ContentLength + " kb<br>" +"Content type: " + 
       Imgload.PostedFile.ContentType; 
       } 
      catch (Exception ex) 
      { 
       Label1.Text = "ERROR: " + ex.Message.ToString(); 
      } 
     else 
     { 
      Label1.Text = "You have not specified a file."; 
     } 
    } 
} 

回答

0

你必須把的IsPostBack檢查您的Page_Load:

protected void Page_Load(object sender, EventArgs e)   
{   
    if (!Page.IsPostBack) 
    { upctrl = (ASP.gallery_controls_imgupload_ascx)LoadControl ("Controls/ImgUpload.ascx");    
     upctrl.ImgBtnUpClick += new EventHandler(Upload);   
     upctrl.ImgAttr = "checkFileExtension(this); return false;";    
     PlaceHolderupctrl.Controls.Add(upctrl);  
    }     
}