我有一个MVC控制器,我在其中定义了此Route
属性以从URL检索可选属性
[Route("Base/SingleOffer/{idOffer?}")]
public ActionResult SingleOffer(int? idOffer) {
...
return View();
}
使用以下网址时,View
会正确呈现:
/碱/ SingleOffer
/碱/ SingleOffer?idOffer = 5
但是在使用此网址时出现错误
/碱/ SingleOffer / 5
特别是错误是
HTTP错误404.0 - 未找到
您要查找的资源已被删除,名称已更改或暂时不可用。
错误在哪里?
答案 0 :(得分:2)
它对我有用的方法是将RoutConfig.cs
中的可选参数重命名为属性上的内容,因此在您的情况下,URL将为:url: "{controller}/{action}/{idOffer}"
routes.MapRoute(
name: "base",
url: "{controller}/{action}/{idOffer}",
defaults: new { id = UrlParameter.Optional }
);
<强> 或者: 强>
将routes.MapMvcAttributeRoutes();
添加到RouteConfig.cs
,您可以使用属性路由,所有路径都可以使用(确保没有routes.MapRoute();
,因为您要使用属性路由!)例如
Base/SingleOffer //idOffer would null
Base/SingleOffer?idOffer=5 //idOffer would be 5
Base/SingleOffer/5 //idOffer would be 5