私は、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応答ヘッダーを削除することは可能ですか?