2016-12-27 33 views
1

有人會告訴我,如果在ASP中有Response.AddHeader("Refresh", "10")的模擬。請問.NET MVC5?我試過[OutputCache(NoStore = true, Location = OutputCacheLocation.Client, Duration = 10)]但它不起作用。什麼是ASP中的Response.AddHeader(「刷新」,「10」)的模擬。 NET MVC5

+0

你可以用'Response.AddHeader() '在MVC5中。你想達到什麼目的?什麼「不起作用」? – Jasen

+0

@Jasen我認爲應該是一些方法屬性標記來做到這一點,對吧? –

+0

將其直接添加到控制器操作中。或者製作自定義操作過濾器以獲取屬性樣式。 – Jasen

回答

1

您可以在控制器

public ActionResult MyAction() 
{ 
    Response.AddHeader("Refresh", "10"); 
    return View(); 
} 

直接使用它,或者你可以做一個自定義的行爲過濾

public class RefreshAttribute : ActionFilterAttribute, IActionFilter 
{ 
    public string Duration { get; set; } 

    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     var duration = 10; 

     Int32.TryParse(this.Duration, out duration);    

     filterContext.HttpContext.Response.AddHeader("Refresh", duration.ToString()); 
    } 
} 

使用

[Refresh(Duration = "10")] 
public ActionResult MyAction() 
{ 
    return View(); 
} 
2

[OutputCache]適用於高速緩存動作的輸出。 Duration param只是告訴它需要多長時間來緩存該輸出。無論有什麼做設置HTTP頭,並且肯定不會自動進行刷新頁面。

Reponse.AddHeader仍處於MVC5有效;你只需要確保你還沒有開始響應。除非你在牆上做點什麼,這並不難。如果你正在返回ViewResult,例如,只需要調用這個第一:

Response.AddHeader("Refresh", "10"); 
return View(); 

如果你直接寫入到響應,那麼就確保你添加頁眉你開始做之前。

相關問題