我有一个我在弹出窗口中使用的asp.net页面。这个弹出窗口基本上包含两个图像控件,标记包含JCrop插件。在页面中,弹出窗口打开,因此页面加载。我正在以字节为单位读取图像,转换为base64并将其设置为两个图像控件的src属性(两者都有runat ='server')。该页面有2个按钮。但点击这些按钮并没有点击任何事件处理程序,如page_load,button_clicked等。
<img id="target" runat="server" alt="Main Image" />
<img id="imgCropped" runat="server" alt="Preview Image" class="jcrop-preview" style="border-color:gray" />
protected void Page_Load(object sender, EventArgs e)
{
strMIMEType = Session["MIMEType"].ToString();
strImageData = Session["ImageData"].ToString();
strImageName = Session["ImageName"].ToString();
if (!IsPostBack)
{
string sTemp = "data:" + strMIMEType + ";base64," + strImageData;
target.Src = sTemp;
imgCropped.Src = sTemp;
}
}
下面的代码是当用户选择图像文件并点击UploadClick按钮时。
protected void btnUploadclick(object sender, EventArgs e)
{
HttpPostedFile objfile = AsyncUpload.PostedFile;
if (AsyncUpload.HasFile)
{
if (!IsImageValid(objfile))
ClientScript.RegisterClientScriptBlock(this.GetType(), "ImageNotValid", "alert('Image format is wrong. Please upload JPEG, PNG or GIF images.')");
else
{
Session["ImageData"] = Convert.ToBase64String(System.IO.File.ReadAllBytes(objfile.FileName), 0, System.IO.File.ReadAllBytes(objfile.FileName).Length);
Session["MIMEType"] = objfile.ContentType;
Session["ImageName"] = AsyncUpload.FileName;
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "OpenPopUp", "window.open('ImageCropPopup.aspx', 'CropImage', 'height=450,width=700,left=350,top=170,resizable=no,scrollbars=no,toolbar=no,status=no');", true);
}
}
else
ClientScript.RegisterClientScriptBlock(this.GetType(), "ImageNotUploaded", "alert('Please select an Image.')");
}
当我点击任何按钮时,它根本没有点击page_load。请帮忙。
答案 0 :(得分:0)
在jQuery弹出窗口中放置ASP.NET服务器控件按钮后,您将丢失主页面中的click事件。您基本上已从DOM中删除了该按钮。您可以尝试在主页面上使用jQuery隐藏服务器按钮,使用标准html按钮替换服务器按钮,然后使用jQuery中的.trigger
事件单击服务器按钮。
像这样:
$("#yourHtmlButtonID").click(function(){
$("#yourServerButtonID").trigger("click");
});
请记住使用jQuery隐藏服务器按钮,而不是隐藏Visible = false
的ASP.NET属性,因为如果你这样做,它将无法呈现给页面。