2010-07-01 5 views
1

На ASP.NET MVC-сайте, который я пишу, я создаю общее действие с ошибкой, которое направлено HttpModule, following this tutorial. В этом действии я верну представление, соответствующее коду состояния, который применяется к ответу внутри HttpModule (после этого модуль передает запрос на соответствующее действие).ASP.NET MVC: Фильтрация/изменение кода состояния HTTP в атрибуте OutputCache

Это все хорошо, за исключением того, что я хочу реализовать кэширование. Я не хочу использовать атрибут OutputCache без фильтрации/изменения, потому что это будет означать, что страница будет кэшироваться один раз. Я хочу, чтобы страница была кэширована один раз для каждого возможного кода состояния.

Возможно ли каким-либо образом фильтровать/меняться с помощью свойств OutputCacheAttribute, так что каждый Response.StatusCode кэшируется отдельно?

ответ

0

Как вы в настоящее время обрабатываете маршрутизацию для действия с ошибкой, например. вы могли бы:

/Errors/404 
/Errors/500 

Все указует на точно такие же действия, и кэширование будет обрабатываться для вас, потому что они являются независимой URLs, и вы применить OutputCache атрибут один раз в родовое действие ошибки:

[OutputCache] 
public ActionResult DisplayError(int errorCode) { 
    return View(errorCode.ToString()); 
} 

Будет ли это работать?