Asp.net MVC + routelink只得到404错误

本文关键字:错误 routelink net MVC Asp | 更新日期: 2023-09-27 18:14:25

下面是我的代码:

RouteConfig.cs

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            name: "snakes",
            url: "snakes-databases/",
            defaults: new { controller = "SnakesController", action = "index" }
        );
        routes.MapRoute(
            name: "snakesLists",
            url: "snakes-databases/{family}/",
            defaults: new { controller = "SnakesController", action = "Lists", family = "" }
        );
        routes.MapRoute(
            name: "snakesDetails",
            url: "snakes-databases/{family}/{species}/",
            defaults: new { controller = "SnakesController", action = "Details", family = "", species = "" }
        );
        routes.MapRoute(
            name: "Default",
            url: "",
            defaults: new { controller = "Home", action = "Index" }
        );
    }
}

_Layout.cshtml

@Html.RouteLink("snakes database", "snakes", null, new { @class = "dropdown-toggle", data_toggle="dropdown"})
<ul class="dropdown-menu">
    <li>@Html.RouteLink("Boidae", "snakesLists", new { family = "boidae" })</li>
    <li>@Html.RouteLink("Colubridae", "snakesLists", new { family = "colubridae" })</li>
    <li>@Html.RouteLink("Elapidae", "snakesLists", new { family = "elapidae" })</li>
    <li>@Html.RouteLink("Viperidae", "snakesLists", new { family = "viperidae" })</li>
</ul>

SnakeController.cs:

public ActionResult Lists(string family)
{
    return View();
}

我不明白为什么每个url除了主页(/)我得到一个404错误。

Asp.net MVC + routelink只得到404错误

哦,你不需要设置:

controller = "SnakesController"

只设置为:

controller = "Snakes"
所有是:

        routes.MapRoute(
            name: "snakes",
            url: "snakes-databases/",
            defaults: new { controller = "Snakes", action = "index" }
        );
        routes.MapRoute(
            name: "snakesLists",
            url: "snakes-databases/{family}/",
            defaults: new { controller = "Snakes", action = "Lists", family = "" }
        );
        routes.MapRoute(
            name: "snakesDetails",
            url: "snakes-databases/{family}/{species}/",
            defaults: new { controller = "Snakes", action = "Details", family = "", species = "" }
        );

希望能帮到你

你没有定义你的动作,对于主页你不需要这样做,因为那是默认的索引动作。

   routes.MapRoute(
        name: "snakes",
        url: "snakes-databases/{index}",
        defaults: new { controller = "SnakesController", action = "Index" }
    );
    routes.MapRoute(
        name: "snakesLists",
        url: "snakes-databases/{Lists}/{family}/",
        defaults: new { controller = "SnakesController", action = "Lists", family = "" }
    );
    routes.MapRoute(
        name: "snakesDetails",
        url: "snakes-databases/{Details}/{family}/{species}/",
        defaults: new { controller = "SnakesController", action = "Details", family = "", species = "" }
    );