2016-12-27 37 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(); 

如果你直接写入到响应,那么就确保你添加页眉你开始做之前。

相关问题