2009-05-20 27 views
2

オプションであるrouteValueを条件付きで設定する方法を理解しようとしています。ASP.net MVC RouteLinkとオプションのrouteValues

訪問者がそのカテゴリの「カテゴリ」Iのみを表示する製品をクリックし、ない「カテゴリ」が存在しない場合、私はすべての製品を表示した場合、私は

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex) }) %> 

持っています。

これらの2つのURLは、有効な次のようになります。

/製品/ページ

/製品/ページカテゴリ=車

RouteLinkが私のポケベルに私は、私は何とかカテゴリを渡すことができると考えられている

?ページ間のカテゴリを持続させるために、ページャ内のリンク内のパラメータ。しかし、カテゴリが選択されていないケースとカテゴリが選択されているケースをどのように処理するかはわかりません。

は、私はこれを行うことができます知っている:

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=cars }) %> 

しかし、それは可能ですが、if文、いくつかの厄介を作成せずに両方のケースを処理するために?

答えて

3

これは単なるアイデアですが、空のカテゴリパラメータを渡すことはできませんか?

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=(ViewData["CategoryName"]) }) %> 

そして、ページを取得した製品のコントローラで、存在するかどうかを確認してください。

public ActionResult Index(int page, string category) 
{ 
    ViewData["CategoryName"] = category; 

    if(!string.IsNullOrEmpty(category)){ 
     //paging with category 
    }else{ 
     //paging without category 
    } 
    return View("Create"); 
} 

「厄介なif文」の意味ですか?

+0

詳細な例をありがとうございます。あなたが空またはnullをroutValuesに渡すと、値の名前が出力されないことはわかりませんでした。とてもかっこいい! – dtc

+0

私の喜び、私が助けることができてうれしい – Peter

2

変数がNULLまたは空ストリングである場合、Html.RouteLinkメソッドが自動的にURLにカテゴリパラメータを追加しません。あなたは余分なチェックをする必要はありません。

+0

ありがとう。私はそれに慣れていないかもしれないし、多分私はちょうどばかだが、ゆっくりと私はasp.net MVCの規則を理解し始めている。なぜなら、それはしばしば私にとって魔法のように思える。 – dtc