如何传递任何图像ID

时间:2015-07-27 11:18:38

标签: c# html asp.net

尝试从表中显示最新图像,此处的代码工作正常,但无法显示最新图像,因为传递的图像URL id被确定为image4。我希望图片ID为任何ID并显示最新图像。怎么做?

HTML:

<asp:image ToolTip = "ASP Image Control" ID="Image" runat="server" ImageUrl   ="Default.aspx?ImageID=4" Height="200px" Width="300px"></asp:image>

背后的代码

 if (Request.QueryString["ImageID"] != null)
    {
        string strQuery = "select TOP 1 Name, ContentType, Data from stock where id=@id order by id DESC";
        SqlCommand cmd = new SqlCommand(strQuery);
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32 (Request.QueryString["ImageID"]);
        DataTable dt = GetData(cmd);
        if (dt != null)
        {
            Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
            Response.Buffer = true;
            Response.Charset = "";
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.ContentType = dt.Rows[0]["ContentType"].ToString();
            Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["Name"].ToString());
            Response.BinaryWrite(bytes);
            Response.Flush();
            Response.End();
        }
    }

2 个答案:

答案 0 :(得分:1)

如果您想获取最新图片,可能应该将空参数传递给Url,但是当您想要获取特定图像时,请传递ID:

<asp:image ToolTip = "ASP Image Control" ID="Image" runat="server"
ImageUrl   ="Default.aspx?ImageID=" Height="200px" Width="300px"></asp:image>

并使代码依赖于ImageID值:

var imageIdParam = Request.QueryString["ImageID"];
if (imageIdParam != null)
{
    var imageId = imageIdParam == "" ? -1 : Convert.ToInt32 (imageIdParam);
    var cmd = new SqlCommand();
    var strQuery = "select TOP 1 Name, ContentType, Data from stock ";
    if(imageId > 0) {
        strQuery += "where id=@id ";
        cmd.Parameters.Add("@id", SqlDbType.Int).Value = imageId;
    }
    strQuery += "order by id DESC";
    cmd.CommandText = strQuery;

    DataTable dt = GetData(cmd);
    if (dt != null)
    {
        Byte[] bytes = (Byte[])dt.Rows[0]["Data"];
        Response.Buffer = true;
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = dt.Rows[0]["ContentType"].ToString();
        Response.AddHeader("content-disposition", "attachment;filename=" + dt.Rows[0]["Name"].ToString());
        Response.BinaryWrite(bytes);
        Response.Flush();
        Response.End();
    }
}

答案 1 :(得分:0)

您可以在后面的代码中动态设置imageUrl。

int id = ...;
Image.ImageUrl = "Default.aspx?ImageID=+id;