这是我的前缀属性
[RoutePrefix("news/farms")]
public class farmsController : ApiController
我想基于farmid删除一行,但我想要一个像这样的网址结构
/news/farms/{farmId}?version={Version}
我尝试了路由网址,如下面的代码
[HttpDelete, Route("{farmId}?version={Version}", Name = "Deletefarm")]
但它显示
The route template cannot start with a '/' or '~' character and it cannot contain a '?' character.
请有人告诉我有没有其他方法可以解决此错误?
答案 0 :(得分:2)
在示例中设置RoutePrefix
:
[RoutePrefix("news/farms")]
public class FarmsController : ApiController
你的删除Methode:
[HttpDelete]
[Route("{farmId}")]
public void Delete(int farmId, string version)
然后这应该有效:
... /消息/农场/ 1?版本= myVersion
答案 1 :(得分:0)
为什么要尝试将路由中的版本添加为查询参数?这不是你想要的控制器路由吗?
不过: 这会有用吗?
[HttpDelete]
public async Task<IActionResult> Delete(int id, [FromQuery] string version)
{
//...your code
}
使用[FromQuery]
指定您想要来自....查询;)
答案 2 :(得分:0)
URI路径中不能包含查询字符串,因此不允许使用,请参阅 - http://tools.ietf.org/html/rfc3986#section-3.3
您的回答是什么 -
[HttpDelete]
public IActionResult DeleteFarm(int farmId, [FromQuery] string version)
{
//
}