2009-08-25 6 views
1

NicのコントローラからFileResultとしてイメージをストリーミングする方法を試しています。 CodeProject articleMVCコントローラからのFileResultとしてChartイメージをストリームする方法jQuery Ajax経由で更新する

私はそれをさらに進歩させ、画像をjQuery経由で更新させることを考えました。
私はあらゆる方法を試しましたが、表示するイメージを取得できません。この現在の状態では、PNGのすべての文字が表示されています。バイナリデータを送信していると思います。
誰でもこれを行う方法に関するアイデアはありますか?

部分図

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<img src="/Home/GetHistoryChart" alt="My Chart" id="imgHistoryChart" /> 

ページ

<input id="begindate" type="text" readonly="readonly" style="width:70px;" /> 
<input id="enddate" type="text" readonly="readonly" style="width:70px;" /> 
<input type="submit" value="Refresh" id="refreshHistory" /> 
<div type="text" id="datepicker"></div> 
<div id="theImageHistory"> 
<% Html.RenderPartial("~/Views/Home/Charts/HistoryImg.ascx"); %></div> 
<%--Gets the partial view shown above--%> 
</div> 

<script type="text/javascript"> 
$(document).ready(function() { 
$("#refreshHistory").click(function() { 
     var fromDate = $("#begindate").val(); 
     var toDate = $("#enddate").val(); 
     RefreshImage(fromDate, toDate); 
    }); 
}); 
function RefreshImage(from, to) { 
$('div#theImageHistory').load('/Home/GetHistoryChart', { fromDate: '8/1/2009', toDate : '8/24/2009' }, 
    function(html) { 
     //$('div#theImageHistory')[0].value = html; 
     alert('Do I get here'); 

    }); 
} 
</script> 

コントローラ

public FileResult GetHistoryChart(string? fromDate, string? toDate) 
{ 
// code... 
System.IO.MemoryStream imageStream = new System.IO.MemoryStream(); 
     Chart1.SaveImage(imageStream, ChartImageFormat.Png); 
     return new FileResult("Yo.png", "image/png", imageStream.ToArray()); 
} 

答えて

2

jQueryのロード関数exp ectsを使用してサーバーからHTMLを取得しますが、バイナリストリームを返すアクションを呼び出すので、バイナリストリームはHTMLとして表示される前にテキストに変換されます。

あなたは、単にこのようとしてRefreshImageを書き換えることができます:あなたが本当にする必要があるすべては、画像要素のSRCを更新している

function RefreshImage(from, to) { 
    $('imgHistoryChart')[0].src = '/Home/GetHistoryChart?' + 
            'fromDate=' + escape(from) + 
            '&toDate=' + escape(to); 
}

。また、HTTPキャッシュを無効にして、ブラウザーがURLが同じ場所にキャッシュされたイメージを表示しないようにします(そうしない限り)。

関連する問題