1

我正在设计一个 MVC 视图,该视图将使用 AJAX 自动刷新局部视图,使用类似于如何每秒自动刷新 MVC PartialView中描述的技术。

只要客户端启用了 javasript,这应该可以正常工作,但我也会撒谎以支持非 JavaScript 客户端的自动刷新(整个页面)。

所以我想使用自定义在父操作方法中设置刷新AutoRefreshAttribute标题:

public class AutoRefreshAttribute : ActionFilterAttribute
{
    public AutoRefreshAttribute(int waitSeconds)
    {
        this.WaitSeconds = waitSeconds;
    }

    public int WaitSeconds { get; set; }

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.AppendHeader(
            "refresh", 
            this.WaitSeconds.ToString());

        base.OnResultExecuted(filterContext);
    }
}

[AutoRefresh(30)]
public ViewResult Index()
{
    return this.View();
}

然后我想写一些在索引视图加载后执行的 jQuery;这应该删除刷新标头,因此如果客户端启用了 javascript,则不会刷新整个页面。然后我可以允许使用 AJAX 自动刷新部分视图。

是否可以使用 jQuery 删除 HTTP 响应标头?

4

1 回答 1

2

不,这是不可能的。在处理任何 javascript 之前很久就已经读取了 HTTP 标头。

于 2013-08-15T10:24:56.820 回答