2015-04-22 137 views
1

我將2個可爲空的參數傳遞給一個Products動作。但是我被迫在mallId中傳遞一些值,否則我得到一個no route table matches found錯誤。我想在mallId中通過null並在Products行動中收到。傳遞兩個可選參數到RedirectToRoute

return RedirectToRoute("Products", 
         new 
         { 
          mallId =(Int32?)null, 
          storeId =(Int32?)storeProducts.StoreId 
         }); 


[Route("Mall/{mallId?}/Store/{storeId?}/Products", Name = "Products")] 
public ActionResult Products(string mallId, long? storeId) 
{ 
    return View(products); 
} 

屬性路由正在破解我的頭,但它也很棒。

回答

2
[Route("Mall/{mallId?}/Store/{storeId?}/Products", Name = "Products")] 
public ActionResult Products(string mallId = null, long? storeId) 
{ 
    return View(products); 
} 

,不以一個值傳遞的mallId

2

您應該提供mallId的默認值。您分發參數的方式使得無法在路線組成中提供mallId:

[Route("Mall/{mallId=all}/Store/{storeId?}/Products", Name = "Products")] 
public ActionResult Products(string mallId = "all", long? storeId = null) 
{ 
    if(mallId == "all") 
     //do something 

    return View(products); 
} 
+0

這兩個答案都適用。 Upvoted.Thanks。接受第一個 –