2011-06-21 42 views
2

我有一個構建搜索結果表的網頁。用戶可以編輯這些項目。當用戶返回到頁面時,它返回到它未被搜索的狀態(按照它的設計)。保存搜索狀態

我想讓它們返回查詢。我怎樣才能保存頁面狀態?

@model List<MyNamespace.Models.MyModel> 
@{ 
    ViewBag.Title = "Index"; 
} 
<h2> 
    Index</h2> 
@using (Ajax.BeginForm("Search", "MyController", 
    new AjaxOptions 
    { 
     HttpMethod = "GET", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "searchResults" 
    })) 
{ 
    <input type="text" name="q" data-autocomplete="@Url.Action("SearchProviders", "MyController")" /> 
    <input type="submit" value="Search" /> 
} 

<div id="searchResults" /> 

控制器動作:

public PartialViewResult Search(string q) 
     { 
      var jobs = MyRepository.GetJobsByQuery(String.Format("DataProvider='{0}'", q)); 
      return PartialView("_MyPartialRowset", jobs); 
     } 

回答

1

我建議讓您的搜索表單提交使用HTTP GET;搜索參數/條件可以包括在搜索結果頁面的查詢字符串,是這樣的:

/搜Q =邪神

然後,讓所有的編輯鏈接,使他們在查詢字符串returnUrl

/物聯網/ 235 /編輯RETURNURL =%2FSearch%3Fq%3Dcthulhu

w ^當保存或取消完成時,返回到returnUrl中指定的頁面。這樣,無論從哪裏打開編輯,都可以使用相同的邏輯返回到上一頁。

作爲這個的一部分,我也會讓搜索結果頁面不被緩存。

更新:

如果您的搜索是通過AJAX做了,那麼你來當用戶回來保存搜索參數自動填充的最簡單的方法是將搜索參數在Cookie中。

+0

我的表單通過GET提交ajax請求。我不希望它靜態轉到搜索頁面。 –

+0

讓我澄清一下,頁面上的搜索功能是ajax。你如何在頁面上存儲ajax狀態 –