c#
  • asp.net
  • visual-studio-2010
  • asp.net-4.0
  • generic-handler
  • 2012-12-14 34 views 0 likes 
    0

    我傳遞一個查詢字符串到我的通用處理程序的圖像轉換從數據庫。 我有我的設計頁面無法通過查詢字符串使用Eval到genericHandler

     <asp:TemplateField> 
         <ItemTemplate> 
         <asp:Image ID="Image1" runat="server" ImageUrl='<%# ImageHandler.ashx?IMG_ID=Eval("Image_ID")+ &IMG_type_ID=Eval("Type_ID_FK") %>' /> 
          </ItemTemplate> 
         </asp:TemplateField> 
    

    我有上的ImageUrl問題上的以下問題。

    下面是我的主設計師代碼

    <form id="form1" runat="server"> 
    <div style="width: 960px; height: 100%; padding: 0; margin: 0; font-size: 0.875em; 
        line-height: 1.785em;"> 
        <div> 
         <asp:Panel ID="Panel1" runat="server"> 
          <h1> 
           Welcome To Blue Marine! Please login with your account</h1> 
          <br /> 
          <h2> 
           Login Area 
          </h2> 
          <div> 
           Username 
           <asp:TextBox ID="txt_username" runat="server" ControlToValidate=" txt_username"></asp:TextBox><span>*</span><asp:RequiredFieldValidator 
            ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please Enter Valid Entry" 
            ControlToValidate="txt_username"></asp:RequiredFieldValidator> 
           <br /> 
           Password 
           <asp:TextBox ID="txt_password" runat="server"></asp:TextBox><span>*</span><asp:RequiredFieldValidator 
            ID="RequiredFieldValidator2" runat="server" ControlToValidate="txt_password" 
            ErrorMessage="Please Enter Valid Entry"></asp:RequiredFieldValidator> 
           <br /> 
           <div style="margin-left: 90px"> 
            <asp:Button ID="btn_Submit" runat="server" Text="Submit" OnClick="btn_Submit_Click" /> 
           </div> 
         </asp:Panel> 
        </div> 
        <div> 
         <asp:Panel ID="Panel2" runat="server" Visible="False"> 
          <div style="text-align: right"> 
           Hello! 
           <asp:Label ID="lb_username" runat="server" Text="Label"></asp:Label> 
           <br /> 
           <div> 
            <asp:LinkButton ID="Linkbtn_signout" runat="server" OnClick="Linkbtn_signout_Click">SignOut</asp:LinkButton> 
           </div> 
          </div> 
          <div style="text-align: left"> 
           <h1> 
            Image Upload Section</h1> 
           <p> 
            You can upload Images here One at a time Format Supported JPG,BMP,PNG 
            <br /> 
           </p> 
           &nbsp;<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
           <asp:FileUpload ID="FileUpload1" runat="server" /><br /> 
           <asp:SqlDataSource ID="SqlDataSource_ImageType" runat="server" ConnectionString="<%$ ConnectionStrings:db_string2 %>" 
            SelectCommand="SELECT [Type_ID_PK], [TypeName] FROM [ImageType]"></asp:SqlDataSource> 
           <br /> 
           Select Image Type&nbsp; 
           <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource_ImageType" 
            DataTextField="Type_ID_PK" DataValueField="Type_ID_PK"> 
           </asp:DropDownList> 
           <span>*</span> 
           <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Select Image Type" 
            ControlToValidate="DropDownList1"></asp:RequiredFieldValidator> 
           <br /> 
           <asp:Button ID="btnUpload" runat="server" OnClick="btnUpload_Click" Text="Upload" /><br /> 
           <br /> 
           <asp:Label ID="lblMessage" runat="server"></asp:Label><br /> 
           <br /> 
           <br /> 
           <div style="text-align: center; margin-left: 170px"> 
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource_DbImage" 
             EnableModelValidation="True" AllowPaging="True" AllowSorting="True" Width="566px" 
             DataKeyNames="Image_ID,Type_ID_FK"> 
             <Columns> 
              <asp:BoundField DataField="Image_ID" HeaderText="Image_ID" InsertVisible="False" 
               ReadOnly="True" SortExpression="Image_ID" /> 
              <asp:BoundField DataField="Type_ID_FK" HeaderText="Type_ID_FK" SortExpression="Type_ID_FK" 
               ReadOnly="True" /> 
              <asp:BoundField DataField="ImageName" HeaderText="ImageName" SortExpression="ImageName" /> 
              <asp:TemplateField> 
               <ItemTemplate> 
                <asp:Image ID="Image1" runat="server" ImageUrl='<%# ImageHandler.ashx?IMG_ID=Eval("Image_ID")+ &IMG_type_ID=Eval("Type_ID_FK") %>' /> 
               </ItemTemplate> 
              </asp:TemplateField> 
             </Columns> 
            </asp:GridView> 
           </div> 
           <asp:SqlDataSource ID="SqlDataSource_DbImage" runat="server" ConnectionString="<%$ ConnectionStrings:db_string2 %>" 
            SelectCommand="SELECT * FROM [Image_Link]"></asp:SqlDataSource> 
          </div> 
         </asp:Panel> 
        </div> 
    </div> 
    </form> 
    

    我後面的代碼:

    public partial class Admin : System.Web.UI.Page 
    { 
        protected void Page_Load(object sender, EventArgs e) 
        { 
         if (Session.Count > 0) 
         { 
          try 
          { 
           string id = Convert.ToString(Session["UserID"]); 
           if (id != "") 
           { 
            if (!IsPostBack) 
            { 
             Panel1.Visible = false; 
             Panel2.Visible = true; 
            } 
            else 
            { 
             Panel1.Visible = false; 
             Panel2.Visible = true; 
            } 
           } 
          } 
          catch (NullReferenceException n) 
          { 
    
          } 
    
    
         } 
         else 
         { 
          if (!IsPostBack) 
          { 
           Panel1.Visible = true; 
          } 
         } 
        } 
    
        protected void btn_Submit_Click(object sender, EventArgs e) 
        { 
         Session.Clear(); 
         bool result = Check_User_Login(txt_username.Text, txt_password.Text); 
         if (result == true) 
         { 
          Panel1.Visible = false; 
          Panel2.Visible = true; 
         } 
         else 
         { 
          Response.Write("<script>alert('Admin Account Does not exist!');</script>"); 
         } 
    
    
    
    
    
        } 
    
    
        public bool Check_User_Login(string para_name, string para_password) 
        { 
         string db_username, dp_password; 
         Web_Eng.DatabaseConection.comm = new SqlCommand("Select Top 1 a.Admin_ID From [Admin] a Order By a.Admin_ID Desc;", Web_Eng.DatabaseConection.connect()); 
         int id = (int)Web_Eng.DatabaseConection.comm.ExecuteScalar(); 
         for (int i = 1; i <= id; i++) 
         { 
          Web_Eng.DatabaseConection.comm.CommandText = "select a.Admin_Name,a.[Password] from [Admin] a where a.Admin_ID=" + i + ";"; 
    
          #region use to retrieve whole row from database 
    
          Web_Eng.DatabaseConection.entrieRow_Reader = Web_Eng.DatabaseConection.comm.ExecuteReader(); 
          while (Web_Eng.DatabaseConection.entrieRow_Reader.Read()) 
          { 
    
           db_username = Web_Eng.DatabaseConection.entrieRow_Reader["Admin_Name"].ToString(); 
           dp_password = Web_Eng.DatabaseConection.entrieRow_Reader["Password"].ToString(); 
    
           if (db_username == para_name && dp_password == para_password) 
           { 
    
            Session["UserID"] = i; 
            lb_username.Text = db_username; 
            Web_Eng.DatabaseConection.entrieRow_Reader.Close(); 
            return true; 
    
           } 
    
          } 
          Web_Eng.DatabaseConection.entrieRow_Reader.Close(); 
    
    
          #endregion 
         } 
         return false; 
        } 
    
        protected void Linkbtn_signout_Click(object sender, EventArgs e) 
        { 
         Session.Clear(); 
         Page.Response.Redirect("Index.aspx"); 
        } 
    
        protected void btnUpload_Click(object sender, EventArgs e) 
        { 
         string strImageName = txtName.Text.ToString(); 
         if (FileUpload1.PostedFile != null && FileUpload1.PostedFile.FileName != "") 
         { 
          byte[] imageSize = new byte[FileUpload1.PostedFile.ContentLength]; 
          HttpPostedFile uploadedImage = FileUpload1.PostedFile; 
          uploadedImage.InputStream.Read(imageSize, 0, (int)FileUpload1.PostedFile.ContentLength); 
    
    
          // Create SQL Command 
          int id=Convert.ToInt32(DropDownList1.SelectedItem.Value); 
          int result = AddImage_DB(strImageName, id, imageSize); 
          if (result > 0) 
           lblMessage.Text = "File Uploaded"; 
          GridView1.DataBind(); 
         } 
        } 
    
    
    
        public int AddImage_DB(string para_imagename, int para_typeID, byte[] para_image) 
        { 
         try 
         { 
          //DatabaseConection.cmd.con; 
          Web_Eng.DatabaseConection.cmd.Connection = Web_Eng.DatabaseConection.connect(); 
          Web_Eng.DatabaseConection.cmd = new SqlCommand("Insert_Image_Table", Web_Eng.DatabaseConection.connect()); 
          Web_Eng.DatabaseConection.cmd.CommandType = CommandType.StoredProcedure; 
          Web_Eng.DatabaseConection.cmd.Parameters.Add(new SqlParameter("@typeID", SqlDbType.Int)).Value = para_typeID; 
          Web_Eng.DatabaseConection.cmd.Parameters.Add(new SqlParameter("@ImageName", SqlDbType.NVarChar)).Value = para_imagename; 
          Web_Eng.DatabaseConection.cmd.Parameters.Add(new SqlParameter("@convertedImage", SqlDbType.Image, para_image.Length)).Value = para_image; 
          Web_Eng.DatabaseConection.cmd.ExecuteNonQuery(); 
          return 1; 
         } 
         catch (Exception er) 
         { 
    
          Response.Write("<script>alert('Error');</script>"); 
          return 0; 
         } 
        } 
    } 
    

    我的通用處理器

    public class ImageHandler : IHttpHandler 
    { 
    
        public void ProcessRequest(HttpContext context) 
        { 
    
         // Create SQL Command 
         Web_Eng.DatabaseConection.comm = new SqlCommand("Select img.ImageName,img.CompleteImage from Image_Link img where [email protected]_ID and [email protected]_type_ID;", Web_Eng.DatabaseConection.connect()); 
         Web_Eng.DatabaseConection.cmd.CommandType = System.Data.CommandType.Text; 
    
         // Img ID 
         SqlParameter ImageID = new SqlParameter("@IMG_ID", System.Data.SqlDbType.Int); 
         ImageID.Value = context.Request.QueryString["IMG_ID"]; 
    
         // iMG Type ID 
         SqlParameter Image_Type_ID = new SqlParameter("@IMG_type_ID", System.Data.SqlDbType.Int); 
         Image_Type_ID.Value = context.Request.QueryString["IMG_type_ID"]; 
    
    
         // Adding Parameters 
         Web_Eng.DatabaseConection.cmd.Parameters.Add(ImageID); 
         Web_Eng.DatabaseConection.cmd.Parameters.Add(Image_Type_ID); 
    
         SqlDataReader dReader = Web_Eng.DatabaseConection.cmd.ExecuteReader(); 
         dReader.Read(); 
         context.Response.BinaryWrite((byte[])dReader["CompleteImage"]); 
         dReader.Close(); 
        } 
    
        public bool IsReusable 
        { 
         get 
         { 
          return false; 
         } 
        } 
    } 
    

    不知道什麼,我順便查詢字符串做錯了我的手柄

    由於提前

    回答

    0

    嘗試的語法如下:

    <asp:Image ID="Image1" runat="server" ImageUrl='ImageHandler.ashx?IMG_ID=<%# Eval("Image_ID")+&IMG_type_ID=Eval("Type_ID_FK") %>' /> 
    
    +0

    @ irish您的回答將<%作爲IMG的查詢值。 –

    0

    謝謝大家我已經解決我自己的問題我張貼誰可能有同樣的問題,其他人的回答會幫助他們

    只需更換

    <asp:Image ID="Image1" runat="server" ImageUrl='<%# ImageHandler.ashx?IMG_ID=Eval("Image_ID")+ &IMG_type_ID=Eval("Type_ID_FK") %>' /> 
    

    通過

    <asp:Image ID="Image1" runat="server" ImageUrl='<%# "ImageHandler.ashx?IMG_ID=" + Eval("Image_ID")+"&IMG_type_ID="+Eval("Type_ID_FK")%>' /> 
    
    0
    public void ProcessRequest(HttpContext context) 
        { 
         using (SqlConnection connection = new SqlConnection()) 
         { 
          connection.ConnectionString = "Server=ESLHP280G1P\\SQLEXPRESS; Database=Sample; user id=sa; [email protected]"; 
          connection.Open(); 
          SqlCommand cmd = new SqlCommand("tblImage_Retrieve", connection); 
          cmd.CommandType = CommandType.StoredProcedure; 
          cmd.Parameters.AddWithValue("@id", context.Request.QueryString["id"]); 
          SqlDataReader dr = cmd.ExecuteReader(); 
          while (dr.Read()) 
          { 
           byte[] bytes = (byte[])dr["photo"]; 
           if (bytes.Length > 0 && bytes != null) 
           { 
            context.Response.ContentType = "jpg"; 
            context.Response.BinaryWrite(bytes); 
           } 
          } 
         } 
        } 
    
    相關問題