2011-01-26 52 views
0

如何僅使用控制器刷新視圖。是否有類似的東西?更新視圖ASP NET MVC 3.0

public ActionResult Index() 
{ 

    [Controller(Update = 10)] 

} 
+0

你問的是有沒有辦法強制瀏覽器從服務器刷新? – JohnOpincar 2011-01-26 20:01:19

回答

3

創建注入元刷新標籤的「自動刷新」 action屬性:

public class AutoRefreshAttribute : ActionFilterAttribute 
{ 
    public const int DefaultDurationInSeconds = 300; // 5 Minutes 

    public AutoRefreshAttribute() 
    { 
     DurationInSeconds = DefaultDurationInSeconds; 
    } 

    public int DurationInSeconds 
    { 
     get; 
     set; 
    } 

    public string RouteName 
    { 
     get; 
     set; 
    } 

    public string ControllerName 
    { 
     get; 
     set; 
    } 

    public string ActionName 
    { 
     get; 
     set; 
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
     string url = BuildUrl(filterContext); 
     string headerValue = string.Concat(DurationInSeconds, ";Url=", url); 

     filterContext.HttpContext.Response.AppendHeader("Refresh", headerValue); 

     base.OnResultExecuted(filterContext); 
    } 

    private string BuildUrl(ControllerContext filterContext) 
    { 
     UrlHelper urlHelper = new UrlHelper(filterContext.RequestContext); 
     string url; 

     if (!string.IsNullOrEmpty(RouteName)) 
     { 
      url = urlHelper.RouteUrl(RouteName); 
     } 
     else if (!string.IsNullOrEmpty(ControllerName) && !string.IsNullOrEmpty(ActionName)) 
     { 
      url = urlHelper.Action(ActionName, ControllerName); 
     } 
     else if (!string.IsNullOrEmpty(ActionName)) 
     { 
      url = urlHelper.Action(ActionName); 
     } 
     else 
     { 
      url = filterContext.HttpContext.Request.RawUrl; 
     } 

     return url; 
    } 
} 

然後使用它是這樣的:

[AutoRefresh(DurationInSeconds = 10)] 
public ActionResult Index() 
{ 

}