2009-05-20 96 views
2

我想弄清楚如何有條件地設置一個可選的routeValue。ASP.net MVC RouteLink和可選路由值

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

如果訪問者點擊了「類」我只顯示這一類的產品,但如果沒有「類別」我告訴所有產品。

這2個網址將是有效的:

/產品/頁

/產品/頁類別=車

的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"); 
} 

或者是你所說的「尷尬,如果陳述」?

+0

感謝您的詳細示例。我不知道,如果您將空或空傳入到routValues中,它將不會輸出值名稱。很酷! – dtc 2009-05-20 18:36:48

+0

我的榮幸,很高興能幫到您 – Peter 2009-05-21 11:55:49

2

如果汽車變量爲空或空字符串,Html.RouteLink方法不會增加類別參數自動URL。你不需要額外的檢查。