Asp.net MVC路由属性未按预期工作
我有一个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错
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