2017-04-06 5 views
0

ユーザーがクリックしたときにページ全体を再表示した後、部分ビュー(検索セクション)でドロップダウンリストを「リセット」する方法が必要ですブラウザの戻るボタン。ブラウザのバックボタンをクリックして部分ビューでコントロールの値をリセットする方法

インデックスビューには検索部分ビューが含まれ、検索ではインデックスページの別のセクションが更新され、ユーザーが結果の1つをクリックすると詳細ページが表示されます。ここまでは順調ですね。ただし、ユーザーがブラウザの戻るボタンをクリックすると、検索部分ビューの索引ページが再度表示されますが、ドロップダウンリストに選択した項目が表示されます。私はそれらをリセットする必要があります。

私は、Indexメソッドの上に

[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ありがとうございます! upvote –

関連する問題