如您所知,我們在RC1版本的ASP.NET MVC中有一個新的ActionResult調用FileResult。如何使用ASP.NET MVC中的FileResult返回304狀態RC1
使用它,您的動作方法可以動態地將圖像返回給瀏覽器。事情是這樣的:
public ActionResult DisplayPhoto(int id)
{
Photo photo = GetPhotoFromDatabase(id);
return File(photo.Content, photo.ContentType);
}
在HTML代碼中,我們可以使用這樣的事情:
<img src="http://mysite.com/controller/DisplayPhoto/657">
由於圖像動態返回,我們需要一種方法來緩存返回的流,讓我們不要不需要從數據庫中再次讀取圖像。我想我們可以這樣做,我不知道:
Response.StatusCode = 304;
這告訴瀏覽器,您已經在緩存中有圖像。在將StatusCode設置爲304之後,我只是不知道要在我的操作方法中返回什麼內容。我應該返回null還是什麼?
在第一請求,我設置ETag的屬性這樣的: HttpContext.Current.Response.Cache.SetETag(someUniqueValue); 在隨後的請求中,通過閱讀ETag,我知道圖像在瀏覽器的緩存中,因此我必須返回304 – Meysam 2009-03-03 08:54:03
返回304時使用EmptyResult,而不是FileResult。 – 2009-03-03 12:41:27