2016-10-06 14 views
1

私はcaptchaイメージをリフレッシュすることができるcaptchaコントロールを開発しています。私はサーバーにイメージを格納するオプションがありません。私はこの目的のASP.Net MVCを使用しています。ASP.Net MVCのFileStreamResultを使用してイメージを表示

私のコントローラのアクションコード:私は更新ボタンをクリックしたとき

public FileResult GetCaptchaImage() 
{ 

    // Create a CAPTCHA image using the text stored in the Session object. 
    CaptchaImage ci = new CaptchaImage(this.Session 
     ["CaptchaImageText"].ToString(), 300, 75); 
    // Change the response headers to output a JPEG image. 
    MemoryStream stream = new MemoryStream(); 
    ci.Image.Save(stream, ImageFormat.Png); 
    stream.Seek(0, SeekOrigin.Begin); 
    return new FileStreamResult(stream, "image/png"); 
} 

htmlコードは、かみそりビュー今

<img id="captchaImage" class="img-responsive" src="@Url.Action("GetCaptchaImage","Home")" /> 

に画像を表示するためには、このIMGが更新されるはずです。ボタンをクリックすると、私はajax呼び出しを使用して同じコントローラアクションを再度呼び出しており、FileStreamResultを返しています。 jQueryの使用

function RefreshCaptcha() { 
$.ajax({ 
    url: "/Home/GetCaptchaImage" 
}).then(function (data) { 
    console.log(data); 
}); 

}が、どのように私は画像で応答内容を設定するのですか?

ご案内しています。どうもありがとう。

答えて

2

、AJAXを使用して、単純に同じURLを呼び出し、それが値をキャッシュして、画像のソースを変更しないように、キャッシュなしのクエリ文字列に合格する必要がありません:私は

$('#captchaImage').attr('src', '/Home/GetCaptchaImage?nc=' + (new Date).getTime();); 

をたとえば、私はエポック時間を使用していますが、単純にランダムな値を使用できます。

+0

ありがとうございました。それが助けになりました。 –

関連する問題