Asp.net MVC路由属性未按预期工作

Asp.net MVC路由属性未按预期工作,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有一个MVC控制器,我在其中定义了这个Route属性,以从URL检索可选属性 [Route("Base/SingleOffer/{idOffer?}")] public ActionResult SingleOffer(int? idOffer) { ... return View(); } 使用以下URL时,视图正确呈现: /基本/单一报价 /基本/单一报价?idOffer=5 但我在使用此URL时出错 /基本/单一报价/5 具体来说,错误是 HTTP错

我有一个MVC控制器,我在其中定义了这个
Route
属性,以从URL检索可选属性

[Route("Base/SingleOffer/{idOffer?}")]
public ActionResult SingleOffer(int? idOffer) {
    ...
    return View();
}
使用以下URL时,
视图
正确呈现:

/基本/单一报价

/基本/单一报价?idOffer=5

但我在使用此URL时出错

/基本/单一报价/5

具体来说,错误是

HTTP错误404.0-找不到

您正在查找的资源已被删除、名称已更改或暂时不可用


错误在哪里?

对我来说,它的工作方式是将
RoutConfig.cs
中的可选参数重命名为what is on属性,因此在您的例子中,URL应该是:
URL:“{controller}/{action}/{idOffer}”

或:

添加
routes.mapmvcattributterroutes()到您的
RouteConfig.cs
,您可以使用属性路由,所有路径都可以工作(确保没有
routes.MapRoute();
,因为您想使用属性路由!)例如


通过这种方式它可以工作,但我更喜欢在单个
操作视图上使用
路由
属性。谢谢,它现在可以工作了!我一直在WebApi2控制器中使用它,现在我在WebApiConfig.cs中看到了
config.maphttpAttribute路由(),我想这相当于在MVC中启用
Route
属性
routes.MapRoute(
               name: "base",
               url: "{controller}/{action}/{idOffer}",
               defaults: new { id = UrlParameter.Optional }
           );
Base/SingleOffer            //idOffer would null
Base/SingleOffer?idOffer=5  //idOffer would be 5
Base/SingleOffer/5          //idOffer would be 5