2016-10-06 1 views
1

Я разрабатываю элемент управления captcha, который позволяет обновлять изображение captcha. У меня нет возможности хранить изображение на сервере. Для этого я использую ASP.Net MVC.Показать изображение с помощью FileStreamResult из ASP.Net MVC

Мой контроллер код действия:

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.

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

}

Теперь, используя JQuery, как установить содержание ответа на изображении?

Просим руководствоваться. Огромное спасибо.

ответ

2

Нет необходимости использовать Ajax, просто вызовите один и тот же URL, но передать в строку запроса не-кэша, чтобы он не кэшировать значения, а затем изменить источник изображения:

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

В моей Например, я использую эпоху, но вы можете просто использовать случайное значение.

+0

Большое спасибо Андрес. Это помогло. –