2012-09-13 3 views
0

나는 결과를 필터링 할 수있는 검색 옵션보기를 가지고있다 표준 발상 생성 된보기입니다. FilterModel가 포함기억 이전 필터 설정

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

문제 : 나는 항목 중 하나를 편집하고 다시 검색 ciriteria 사라 졌어요 기본보기로 이동합니다. FilterModel으로 설정된 값을 어떻게 기억합니까? 따라서 목록에서 항목을 편집하거나 보았을 때 이전에 설정했던 것과 동일한 필터 옵션으로 돌아갈 수 있습니까?

많은 도움을 주셨습니다.

답변

1

이것은 일반적인 시나리오입니다. 나는 보통 검색 폼을 POST (기본값) 대신 GET을 사용하여 제출하고 HttpSession에 Request.UrlReferrer를 저장합니다. 그런 다음 취소 및 리디렉션 작업에이 세션 값을 사용합니다. 여기

은 예입니다

<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에 있습니다. 저장된 URL로 리디렉션하여 검색 작업과 모델이 작동합니다 :) –