1

私は、MVC PartialView を毎秒自動更新する方法で説明されているような手法を使用して、AJAX を使用して部分ビューを自動的に更新する MVC ビューを設計中です。

これは、クライアントで 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();
}

次に、Index ビューが読み込まれた後に実行される jQuery を書きたいと思います。これにより、更新ヘッダーが削除されるため、クライアントで JavaScript が有効になっている場合、ページ全体が更新されません。次に、AJAX を使用して部分ビューを自動的に更新できるようにします。

jQueryを使用してHTTP応答ヘッダーを削除することは可能ですか?

4

1 に答える 1

2

いいえ、できません。HTTP ヘッダーは、JavaScript が処理されるずっと前に既に読み取られています。

于 2013-08-15T10:24:56.820 に答える