扩展前的web api可选参数

时间:2016-04-28 07:02:55

标签: c# asp.net-mvc-4 asp.net-web-api routing

我正在使用web api 1 mvc 4

我有以下代码

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

它有效

但是

  

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

不起作用

我找到的原因是因为可选参数" code"介于两者之间。

我怎样才能使它工作..因为我需要扩展必须在最后使用可选参数,例如"代码"。

我找到url,但没有任何相关内容。

由于

1 个答案:

答案 0 :(得分:0)

:你不能。

:你不能在路线中间有一个可选参数,因为系统无法理解“.json”是否是 {code}的值 {ext} 参数的值。

如果要使用这种方法,则需要始终强制执行代码参数。

顺便说一句,像 localhost://api/product/save/1/book/.json 这样的路线没有意义...... .json它就像一个“文件”扩展名,但是有这里没有文件名。你不应该允许这种电话。