#asp.net
#asp.net
Вопрос:
У меня возникла проблема при записи события для пользовательского управления ImageUpload.
Я хочу добавить событие, которое срабатывает при нажатии кнопки imagebutton, в данном случае на зеленую кнопку ok. Я пишу некоторый код для события, но он вызывается при загрузке страницы () и при обратной передаче, поэтому это вызывает проблему -> Путь к изображению, который предоставляется для загрузки изображения, становится понятным после загрузки изображения, но при обновлении страницы одно и то же изображение загружается снова и снова при каждом обновлении страницы.
Код пользовательского управления
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:
вы должны установить проверку 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);
}
}