Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 记住以前的过滤器设置_C#_Asp.net Mvc_Asp.net Mvc 3_Model - Fatal编程技术网

C# 记住以前的过滤器设置

C# 记住以前的过滤器设置,c#,asp.net-mvc,asp.net-mvc-3,model,C#,Asp.net Mvc,Asp.net Mvc 3,Model,我有一个带有搜索选项的视图,可以过滤结果: @model GWeb.Models.FilterModel @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Search criteria</legend> @(Html.Telerik().ComboBox()

我有一个带有搜索选项的视图,可以过滤结果:

@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);}
问题:当我编辑其中一个项目并返回主视图时,搜索ciriteria就消失了。如何记住设置为
FilterModel
的值?这样,在编辑或查看列表中的项目后,我就可以返回到以前设置的过滤器选项了


非常感谢任何帮助

这是一种常见的情况。我通常让搜索表单使用GET而不是POST(默认)提交,并将Request.urlReferer存储在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"]);
     }
}

...
类搜索控制器:控制器
{
公共操作结果索引(FilterModel model=null)
{
会话[“SearchUrl”]=Request.urlReferer.ToString();
var results=获取结果页面。。。
返回视图(结果);
}
[HttpPost]
公共操作结果编辑(编辑模型)
{
//更新模型。。。
返回重定向(会话[“搜索URL]”);
}
}

但我在这里不是问如何获取URLreferer,而是问如何获取FilterModel中设置的数据。如果使用get(而不是POST)提交请求,则模型/数据位于url中。通过重定向到存储的url,搜索操作和模型将只起作用:)
public class FilterModel
{
    public string UserName { get; set; }
    public DateTime? StartWork { get; set; }
    public DateTime? EndWork { get; set; }
    //...
}
<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"]);
     }
}