我有一个名为Blog
的控制器。
我有这样的行动:
[Route("{code:int}/{title?}")]
public virtual ActionResult Index(int code, string title)
{
var postModel = _blogService.Get(code.ToUrlDecription());
return View(postModel);
}
我输入了这些网址,但所有网址都没有找到:
localhost:7708/Blog/index/12/post-title
; localhost:7708/Blog/index/12
; localhost:7708/Blog/12/post-title
。我尝试写下面的路线,但结果是一样的:
routes.MapRoute(
name: "showblogpost", url: "{controller}/{action}/{code}/{title}",
defaults: new {
controller = "Blog",
action = "Index",
title = UrlParameter.Optional
},
namespaces:new string[] { "Web.Controllers" }
);
答案 0 :(得分:1)
有一件事,你不需要在行动和地图路线上使用属性[Route]
。
在您的属性[Route]
中,您只指定了参数,因此根据它的路线应为 localhost:7708/12
在MapRoute
中指定的路线应该是 localhost:7708/showblogpost/12
我的建议是 - 删除您的属性,在MapRoute
中为您想要在网址中看到的路线命名,还可以删除"字符串标题"来自行动的参数,因为它未被使用。