2014-01-29 6 views
0

Браузер не извлекает страницу или ссылку, не работает, если ссылка на текущую страницу. В приведенном ниже примере кода у меня есть ссылка (в меню). Если пользователь сейчас находится на странице GetData, и пользователь снова нажимает ссылку «Получить данные», ничего не происходит. Браузер не пытается извлечь страницу. Я отслеживал это в инструментах разработчика IE8 и Chrome. Есть идеи?Браузер не извлекает страницу или ссылку не работает, если ссылка на текущую страницу

//Link 
<a href="@Url.Action("GetData", "Data")"><i class="glyphicon glyphicon-tag"></i>Get Data</a> 

//Controller has a custom Authorization attribute 
[AuthorizeRedirect] 
public class DataController : Controller 

// Controller Action Invoked 
[HttpGet] 
public ActionResult GetData(int parameter) 
{ 
    ... 
} 

Я создал веб-приложение тест с нуля, и страница обновляется, даже при нажатии на ссылку на страницу, которая в настоящее время загружены.

Я сравнивал оба заголовка ответа из приложения и тестового приложения и заметил разницу в заголовке кеша.

Мое приложение содержит следующее:

Cache-Control:no-cache, no-store 

Хотя мое тестовое приложение содержит только следующее:

Cache-Control:private 

Дополнительная информация: Я использую Угловое JS и на стороне клиента Bootstrap.

+0

Похоже, эта проблема связана с нг-сетки. Я создал другой контроллер и соответствующую страницу с угловыми js и ng-сеткой, и эта страница обновляется после нажатия ссылки на текущую страницу. Когда я добавил простую ng-сетку, щелчок по ссылке ничего не делает. – rro

ответ

0

Я знаю, что это происходит из-за кеширования браузера. Очистите кеш браузера и повторите попытку. надеюсь, что я помогу

+0

Я несколько раз очистил кеш браузера, и такое же поведение происходит – rro

0

Как насчет установки заголовков внутри события Application_PreSendRequestHeaders в Global.asax?

Вы можете использовать Response.Cache.SetCacheability вместо установки заголовков непосредственно. *

void Application_PreSendRequestHeaders(Object sender, EventArgs e) 
{ 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
} 

Альтернативный способ путем установки заголовков вручную.

void Application_PreSendRequestHeaders(Object sender, EventArgs e) 
{ 
    Response.Headers.Set("Cache-Control", "no-cache"); 
} 

Если вы не хотите, не кэширование везде, то вы можете попробовать что-то вроде этого:

[OutputCache(Location = OutputCacheLocation.None)] 
public class HomeController : Controller 
{ 
... 
} 
+0

Я уже делал, но все еще не работает. Что странно, так это то, что в моем приложении я создал новый контроллер (с теми же атрибутами класса и уровня действия), добавив новую страницу. но на новой странице/контроллере страница обновляется, если я нажму ссылку, которая указывает на страницу, на которой я сейчас. – rro

Смежные вопросы