2017-04-06 55 views
0

我需要一種方法在用戶單擊時重新顯示整個頁面後,在部分視圖(搜索部分)中「重置」下拉列表瀏覽器的後退按鈕。如何在點擊瀏覽器後退按鈕時在部分視圖中重置控件的值

索引視圖包含搜索部分視圖,搜索更新索引頁中的另一部分,當用戶單擊其中一個結果時,會顯示詳細信息頁面。到現在爲止還挺好。但是,如果用戶單擊瀏覽器的後退按鈕,則會再次顯示包含搜索部分視圖的索引頁,但會在下拉列表中顯示所選項目。我需要他們重置。

我試圖把

[OutputCache(NoStore = true, Duration = 0)] 

在索引方法的頂部,但它並沒有幫助。


這裏的局部視圖(索引視圖/頁)

enter image description here
這裏是控制器代碼:

public ActionResult Search() 
    {   
     var _citiesList = new SelectList((from c in repository.Cities select c), "CityID", "CityName"); 

     var searchViewModel = new ServiceProviderViewModel.SearchModel 
     { 
      CitiesList = _citiesList 
     }; 

     return PartialView("_SearchSP", searchViewModel);   
    } 

    [HttpPost] 
    public ActionResult Search(ServiceProviderViewModel.SearchModel searchViewModel) 
    { 
     if (ModelState.IsValid) 
     { 
      var _serviceProviders = repository.ServiceProviders. 
       Where(sp => sp.ServiceTypes.Select(t => t.ID).Contains((int)searchViewModel.ServiceType)) 
       .Where(sp => sp.DistrictID == searchViewModel.selectedDistrictID); 

      return PartialView("_SearchResults", _serviceProviders); 
     } 
     else 
     { 
      return PartialView("_SearchSP", searchViewModel); 
     } 
    } 


    public ActionResult GetDistrictsOfTheCity(int cityId) 
    { 
     var districts = new SelectList(repository.Districts.Where(d => d.CityID == cityId), "DistrictID", "DistrictName"); 

     return Json(districts, JsonRequestBehavior.AllowGet); 
    } 
+0

然後不要使用ajax做全頁面刷新,它會自動重置搜索控件 –

回答

0

Duplicate With

現代瀏覽器實現一些已知作爲後退緩存(BFCache)。當你回擊/轉發按鈕時,實際的頁面不會被重新加載(並且腳本不會重新運行)。

如果您在用戶點擊後退/前進鍵時必須執行某些操作 - 監聽BFCache頁面顯示和頁面隱藏事件。

僞jQuery的例子:

$(window).bind("pageshow", function() { 
    // update hidden input field 
}); 

GeckoWebKit實現查看更多細節。

+0

@burakk感謝它的工作!給予好評 –

相關問題