我的ASP.NET核心的默认路由默认为VS2015:
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
当我发出请求URL / my-controller / my-special-view时,它确实调用我的my-control中的方法,该方法定义如下,id参数等于my-special-value
public IActionResult my-controller(string id) {...
我正在尝试使用属性路由做同样的事情。我按如下方式定义属性:
[Route("my-controller/{id}")]
public IActionResult my-controller(string id) {...
我收到如下错误:
InvalidOperationException: The constraint entry 'attributeOfInterest' - 'string' on the route 'CacheTagHelper/{attributeOfInterest:string}' could not be resolved by the constraint resolver of type 'DefaultInlineConstraintResolver'.
我对attritube路由没有经验,也不明白为什么上面的控制器方法不能给我相同的结果。
答案 0 :(得分:1)
默认路由模板为{controller=Home}/{action=Index}/{id?}
所以你可以按照控制器动作中的模板进行操作
my-controller
将是controller
类中的继承类,IActionResult
与您的操作方法匹配,如果您在put中指定了属性以路由{Id}
,在你的方法参数中也应该具体{Id}
,在路由中,你还需要具体的http动词动作(GET,POST,PUT等)
将是
public class my-controller : Controller
{
[HttpGet("{id}")]
public IActionResult my-special-view(String id) { ... }
}