我正在使用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,但没有任何相关内容。
由于
答案 0 :(得分:0)
短:你不能。
长:你不能在路线中间有一个可选参数,因为系统无法理解“.json”是否是 {code}的值或 {ext} 参数的值。
如果要使用这种方法,则需要始终强制执行代码参数。
顺便说一句,像 localhost://api/product/save/1/book/.json 这样的路线没有意义...... .json它就像一个“文件”扩展名,但是有这里没有文件名。你不应该允许这种电话。