아래의 ASP.NET C# 코드에서 EVARY undefined rror가 발생합니다. 동적으로 이미지 버튼을 만들고 CLICK 이벤트에 명시 적으로 할당하고 있습니다. 사용자가 미리보기 이미지를 클릭하면 사용자는 해당 미리보기 이미지가 날린 이미지가있는 페이지로 이동합니다. 사용자가 뒤로 버튼을 눌러 원래 페이지로 이동하면 흥미로운 부분이 생깁니다. 사용자가 미리보기 이미지를 다시 클릭하려고하면 "EVENT가 정의되지 않았습니다."오류가있는 이미지 버튼 클릭 이벤트를 브라우저가 확인하지 못합니다.이 오류는 임의적이며 항상 최소 하나의 "포스트 백"후에 발생하지만 시퀀스는 구글 크롬과 파이어 폭스가 잘 작동하고 이벤트를 인식 할 수있다. 나는 ViewState 속성을 가지고 놀았지만 효과가 없다. 어떤 아이디어?ASP.NET C# 오류 : 개체 이벤트가 정의되지 않았습니다.
protected void ImageButton_Click(object sender, ImageClickEventArgs e)
{
ImageButton ib = (ImageButton)sender;
Server.Transfer(@"FullImage.aspx?file=" +
HttpUtility.UrlEncode("~/Gallery/Pictures/RegSize/pic" +
ib.CommandArgument + ".jpg"));
}
protected void Page_Load(object sender, EventArgs e)
{
//Array containing file locations of thumbnail pictures
string[] files = null;
files = Directory.GetFiles(Server.MapPath("~/Gallery/Pictures/RegSize"), "*.jpg");
for (int i = 0; i < files.Length; i++)
{
System.Web.UI.WebControls.Image imgWeb = new System.Web.UI.WebControls.Image();
//Create bitmap to retrieve Image's size information
Bitmap bmp = new Bitmap(Server.MapPath("~/Gallery/Pictures/RegSize/Pic"
+ i.ToString() + ".jpg"));
//Create dynamic ImageButton to hold the Image
System.Web.UI.WebControls.ImageButton imgBtn =
new System.Web.UI.WebControls.ImageButton();
imgBtn.Click += new ImageClickEventHandler(ImageButton_Click);
imgBtn.Attributes.Add("OnClick", "ImageButton_Click");
//imgBtn.EnableViewState = false;
imgBtn.ImageUrl = "~/Gallery/Pictures/RegSize/pic" + i.ToString() + ".jpg";
imgBtn.CommandArgument = i.ToString();
//Set Imagebutton Width/Height according to the Bitmaps Width/Height
imgBtn.Width = Resize(bmp.Size, 200, 200, "WIDTH");
imgBtn.Height = Resize(bmp.Size, 200, 200, "HEIGHT");
imgBtn.Style.Add(HtmlTextWriterStyle.BackgroundColor, "white");
imgBtn.Style.Add(HtmlTextWriterStyle.Margin, "5px");
//Dispose Bitmap, no need for it
bmp.Dispose();
//imgBtn.ImageUrl = @"thumbnail.aspx?file=\gallery\pictures\regsize\pic" + i.ToString() + ".jpg";
//imgBtn.PostBackUrl = @"FullImage.aspx?file=" + HttpUtility.UrlEncode("~/Gallery/Pictures/RegSize/pic" + i.ToString() + ".jpg");
divDisplay.Controls.Add(imgBtn);
}
나는 바이올린을 사용한 적이 없거나 들어 본 적이 없으므로 캐시 된 설정을 다운로드하고 확인했습니다. 그 위대한 도구 인 고마워요! 어쨌든, 웹 양식은 개인적으로 캐시되고 있으므로 다음 코드를 Page_Load() 이벤트에 추가했습니다. Response.Cache.SetCacheability (HttpCacheability.NoCache); 문제가 해결되었지만 웹 양식을 캐싱하면 "이벤트가 확인되지 않았습니다"가 발생합니다. 나는 내 그림과 CSS 파일이 여전히 캐시되고 있다고 생각한다. 웹 세션의 "캐시"열 아래에있는 피 들러에서 "no-cache"값과 반대되는 필드가 그림 및 CSS 파일에 대해 비어 있기 때문에이 말을합니다. – contactmatt
그것은 국가 관리와 관련이있는 것 같습니다. 나는이 문제가 ViewState와 관련이있을 수 있으며 컨트롤이 존재하기 전에 발생하는 컨트롤 초기화를 의심합니다. Page_Init 중에 이벤트 설정이 발생하면 해당 컨트롤이없고 이벤트 처리기가 할당되지 않아 이벤트가 정의되지 않은 오류가 발생합니다. 재 : 피들러; 예, 훌륭한 도구입니다. (작성자가 한 번에 여기에 게시합니다.) "원시"모드를 사용하여 정확한 HTTP 헤더를 볼 수 있습니다. – RickNZ