ASP.NET MVC 5默认路由不匹配无参数url

时间:2017-05-10 00:28:35

标签: .net asp.net-mvc routing

我正在使用路由属性来路由我的ASP应用。 我设法设置了我的大部分应用程序,但是我遇到了主页的一个大问题。

每当用户输入网站地址时,我都希望它被带到主页:

所以

http://localhost:25902/

http://localhost:25902/Home/Index

应转移到/ Home / Index。

My Route Config如下所示:

 public static void RegisterRoutes(RouteCollection routes)
    {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

我的家庭控制器和索引操作如下:

[RoutePrefix("Home")]
public class HomeController : Controller
{
    [Route("Index")]
    public ActionResult Index()
    {
        return View();
    }
}

但每当我进入时只有loalhost:25902没有任何关注它。我收到404错误。

我真的不明白这个问题是什么,并希望得到一些帮助:)

1 个答案:

答案 0 :(得分:1)

因为根据您的属性路线,当您输入index page时,它会转到/Home/Index,因此当您输入{{1}时,您应添加[Route("~/")]以进入默认索引页面像这样的地址

loalhost:25902

另一种方法是删除[RoutePrefix("Home")] public class HomeController : Controller { [Route("~/")] [Route("Index")] public ActionResult Index() { return View(); } } ,并且“约定”默认路由会将您重定向到[Route("Index")]