2016-12-20 5 views
0

私はmvcで新しく、テーブルとajax検索で簡単なページを作成しようとしています。検索パラメータを記憶する

たとえば、フォームからコントローラにパラメータを渡す検索モデルがあります。

モデル:コントローラで

public class OrderSearchViewModel 
{ 
    [Display(ResourceType = typeof(Lang), Name = "OrderID")] 
    public int? OrderID { get; set; } 

    [Display(ResourceType = typeof(Lang), Name = "DeliveryType")] 
    public int? DeliveryTypeID { get; set; } 

    [Display(ResourceType = typeof(Lang), Name = "Partner")] 
    public string CustomerName { get; set; } 

    public SelectList DeliveryTypes { get; set; } 

} 

私は、フォームとアクションの魔女リターン・ビューを持っている:私のIndex.cshtmlで

public ActionResult Index() 
{ 
    var ordersSearchModel = // default init; 
    return View(model); 
} 

私は、フォームの私には

@model Models.Order.OrderSearchViewModel 

<div class="row"> 

@using (Ajax.BeginForm("Orders", "Order", new AjaxOptions {UpdateTargetId = "ordersList"}, new {@id = "searchForm", @class = "form-horizontal"})) 
{ 
     // Editors templates for each params   
} 
</div> 

<div id="ordersList" class="row"> 

</div> 
} 

を持っていますコントローラ私は方法を持っている、魔女は検索モデルを取って、部分的なビューを返す

[HttpPost] 
public async Task<ActionResult> Orders(OrderSearchViewModel model, int page = 1, int pageSize = 50) 
{ 
    var models = // connect to db and get data filtered by model params 
    return PartilaView("_View", models);   
} 

結果partialには、注文番号numのテーブルと編集ビューへのリンクがあります。 は、編集ビューでは、私は、検索するためのバックリンクを持っている:

@Html.ActionLink("Back", "Index", "Order", new { @class = "btn btn-default" }) 

をANDで、私は(検索パラメータなし)デフォルトのインデックスのビューを取得し、ユーザーが再びそれを埋める必要があり、このリンクをクリックしてください。 ユーザー検索パラメータを覚えておくのがベストプラクティスですか。 アドバイスありがとうございます。

+0

あなただけの次の要求のために検索フィルタが必要な場合は、TempDataを使用することができます。 – jomsk1e

+0

このような使用例では、クエリパラメータを使用する方が良いでしょう – devqon

答えて

0

あなたの問題を解決することがありますが、このアプローチを使用すると発生しますdevqonが言ったように、好ましいアプローチは、クエリパラメータを使用することですが、あなたの使用量が

TempDataを/ SessionDataに管理するために、これは少し難しくなるかもしれないように聞こえるん問題ユーザが、(それらはすべて同じ検索のparamsを共有することになります)複数のタブ/ウィンドウでアプリケーションを使用することを決定した場合

のsessionStorageあるに探して価値があるかもしれない何か。(下記リンク)

ストレージのこのタイプブラウザが開かれている間は持続する

そして重要なのは

新しいタブやウィンドウでページを開くだからあなたのページが状態を共有してはならない

を開始する新しいセッションが発生します。

ここ

詳細: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

関連する問題