2012-09-13 52 views
0

我有與搜索選項視圖,以便過濾結果:記住以前的過濾器設置

@model GWeb.Models.FilterModel 
@using (Html.BeginForm()) 
    { 
     @Html.ValidationSummary(true) 
     <fieldset> 
      <legend>Search criteria</legend> 

       @(Html.Telerik().ComboBox() 
        .Name("UserName")     
        .BindTo(new SelectList(ViewBag.workerList as System.Collections.IEnumerable, "Id", "Desciption")) 
       .Value(Model.UserName)) 

       @(Html.Telerik().DatePicker() 
       .Name("StartWork") 
       .Value(Model.StartWork)) 

       @(Html.Telerik().DatePicker() 
       .Name("EndWork") 
       .Value(Model.EndWork))  

       <input type="submit" value="Filter" /> 

     </fieldset> 
    } 
    @{Html.RenderPartial("EmployeeList", (IEnumerable<GWeb.Entities.Work>)ViewBag.employeeList);} 

的RenderPartial是項目,可以編輯的列表:

<td> 
<a href="@Url.Action("Edit", "Admin", new { id = item.Id })"> 
    <img src="/Content/edit.png" alt="Edit" title="Edit" width="22" height="22" /> 
</a> 

編輯觀點是標準腳手架生成的視圖。 FilterModel包含:

public class FilterModel 
{ 
    public string UserName { get; set; } 
    public DateTime? StartWork { get; set; } 
    public DateTime? EndWork { get; set; } 
    //... 
} 

問題:當我修改的項目之一,並返回到主視圖搜索ciriteria都不見了。我如何記住設置爲FilterModel的值?因此,在編輯或查看列表中的項目後,我可以返回到之前設置的相同過濾器選項?

任何幫助非常感謝!

回答

1

這是一種常見的情況。我通常使用GET而不是POST(默認)提交搜索表單,並將Request.UrlReferrer存儲在HttpSession中。然後使用此會話值進行取消和重定向操作。

這裏有一個例子:

<form action="~/Search/Index" method="GET"> 
    ... 
    <submit /> 
</form> 

class SearchController : Controller 
{ 
    public ActionResult Index(FilterModel model = null) 
    { 
     Session["SearchUrl"] = Request.UrlReferrer.ToString(); 
     var results = get page of results... 
     return View(results); 
    } 

    [HttpPost] 
    public ActionResult Edit(EditModel model) 
    { 
     //update the model... 

     return Redirect(Session["SearchUrl"]); 
    } 
} 
+0

但我不是在這裏詢問如何獲得UrlReferrer而是如何找回那種在FilterModel設定數據。 – Marta

+0

如果您使用GET(而不是POST)提交請求,則模型/數據在url中。通過重定向到存儲的網址搜索行爲和模型將只是工作:) –