行动有2个参数时无法找到路线 - Asp.Net MVC

时间:2016-09-14 05:24:16

标签: asp.net-mvc routes asp.net-mvc-routing

我有一个名为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" }
);

1 个答案:

答案 0 :(得分:1)

有一件事,你不需要在行动和地图路线上使用属性[Route]

在您的属性[Route]中,您只指定了参数,因此根据它的路线应为 localhost:7708/12 MapRoute中指定的路线应该是 localhost:7708/showblogpost/12

我的建议是 - 删除您的属性,在MapRoute中为您想要在网址中看到的路线命名,还可以删除"字符串标题"来自行动的参数,因为它未被使用。