aspx で 1 つのイメージ コントロールを作成しました。コードは次のとおりです。
<div>
<div class="ajaxdata">
<asp:Image ID="image2" runat="server"></asp:Image>
</div>
<a class="ajaxcall">click to see image </a>
</div>
次に、通常のボタンクリックの場合、ハンドラーを使用して以下のように画像を動的に取得しています
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
if (!String.IsNullOrEmpty(context.Request.QueryString["id"]))
{
int id = Int32.Parse(context.Request.QueryString["id"]);
// Now you have the id, do what you want with it, to get the right image
// More than likely, just pass it to the method, that builds the image
Image image = GetImage(id);
// Of course set this to whatever your format is of the image
context.Response.ContentType = "image/jpeg";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
else
{
context.Response.ContentType = "text/html";
context.Response.Write("<p>Need a valid id</p>");
}
}
public bool IsReusable
{
get
{
return false;
}
}
private Image GetImage(int id)
{
string path = string.Empty;
SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Users\1483\Documents\Visual Studio 2010\Projects\WebApplication2\WebApplication2\App_Data\Database1.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";
con.Open();
SqlCommand cmd = new SqlCommand(@"SELECT Path FROM Temp WHERE Id=@idparam", con);
SqlParameter idparam = cmd.Parameters.Add("@idparam", SqlDbType.NVarChar,10);
idparam.Value = id.ToString();
SqlDataReader rd = cmd.ExecuteReader();
if (rd.Read())
{
path = rd.GetString(0);
}
byte[] data= File.ReadAllBytes(path);
MemoryStream stream = new MemoryStream(data);
return Image.FromStream(stream);
}
そしてボタンクリックのC#コードは
image2.ImageUrl = "Handler1.ashx?id=" + txtid.Text;
これはすべて完全に機能するようになりました。ajax呼び出しで画像をフェッチし、同じハンドラーを使用して画像コントロールに割り当てたいので、以下のようにajax呼び出しを書きました
$('.ajaxcall').click(function () {
var id = $('#txtid').val();
var data = 'id=' + id;
$.ajax({
type: "GET",
cache: false,
url: "Handler1.ashx",
data: data, // multiple data sent using ajax
success: function (html) {
$('#image2').val(html);
//This where i need to assign the image stream to the image control i don't know how to do it.
}
});
return false;
});
必要なデータを送信し、データベースから画像を取得して送り返していますが、画像コントロールに割り当てることができません.上記のように割り当てたところ、データであると推測されるすべてのシンボルが表示されますが、画像形式で表現する方法ヘルプまたは回避策は素晴らしいです
前もって感謝します。