2016-04-28 69 views
1

之前我使用網頁API 1個MVC 4網頁API可選參數擴展

我有以下代碼

public void save(int id , string name, string code = "") 
{ 

} 

我在webapi.config下面的映射。

config.Routes.MapHttpRoute(
       name: "saveproduct", 
       routeTemplate: "api/product/save/{id}/{name}/{code}.{ext}", 
       defaults: new 
       { 
        controller = "product", 
        code = RouteParameter.Optional, 
        action = "save" 
       }); 

現在如果我叫

本地主機://api/product/save/1/book/p23.json

它的工作原理

localhost://api/product/save/1/book/.json

它不工作

我發現原因是因爲可選參數「代碼」是介於兩者之間。

我怎樣才能使它工作..因爲我需要擴展必須在最後與可選參數,如「代碼」。

我發現url,但沒有得到任何相關信息。

感謝

回答

0

:你不能。

:你不能在路線中間的可選參數,因爲系統不能夠理解,如果「以.json」是你{}代碼值的價值或您{ext}參數。

如果您想使用這種方法,您需要始終強制執行代碼參數。

順便說一句,像本地主機的路由://api/product/save/1/book/.json有沒有意義......以.json它就像一個「文件」擴展名,但沒有文件名,這裏。你不應該允許這種呼叫。