用户控制事件

时间:2011-06-09 05:01:02

标签: asp.net

写入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.";
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您必须在page_load中添加IsPostBack检查:

 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);      
    }                  
}