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>

編集ビューは、標準的な scaffold 生成ビューです。FilterModel には以下が含まれます。

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

問題:アイテムの 1 つを編集してメイン ビューに戻ると、検索基準がなくなっています。に設定された値をどのように記憶できますFilterModelか? リストからアイテムを編集または表示した後、以前に設定したのと同じフィルター オプションに戻ることができますか?

どんな助けでも大歓迎です!

4

1 に答える 1

1

これは一般的なシナリオです。私は通常、POST (デフォルト) ではなく GET を使用して検索フォームを送信し、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"]);
     }
}
于 2012-09-13T14:36:13.067 に答える