asp.net MVC路由eror 404

时间:2016-09-09 21:10:11

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我不明白ASP.net的根源;我错过了这个? 这是我的根:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="Example">
<a href="http://www.Example.com">
     <img src="http://www.Example.com/Sloth.jpg">
</a>
</div>

这是我的控制器:

 routes.MapRoute(
                name: "ChampionID",
                url: "Champion/ChampionById/id",
                defaults: new { controller = "Champion", action = "ChampionById", id = "5" }
            );

如果你可以帮助我,我将感激不尽

3 个答案:

答案 0 :(得分:1)

忘记routes.MapRoute。只需连接所有路由,然后将路由作为这样的属性:

public class ChampionController : Controller
{
    [Route("Champion/ChampionById/{id}")]
    public ActionResult ChampionById(string id)
    {
       ChampionId ch = new ChampionId();
       ch.Id = id;
       return View(ch);
    }
}

x也应该是id。然后只需删除routes.MapRoute。然后确保你有一个名为ChampionById的相应cshtml文件。

答案 1 :(得分:1)

将您的路线更改为适合您的ActionResult,如下所示:

routes.MapRoute(
                name: "ChampionID",
                url: "Champion/ChampionById/{id}",
                defaults: new { controller = "Champion", action = "ChampionById", id = UrlParameter.Optional }
            );

请注意我使用'id'

更新的内容

此处所有带有'Champion / ChampionById /'模式的请求都将映射到此路由,并且'Champion / ChampionById /'之后的任何内容都将成为'id参数'。由于它在路由上标记为可选,因此也可以为null。所以最好检查一下。

public class ChampionController : Controller
{
    public ActionResult ChampionById(string id)
    {
        ChampionId ch = new ChampionId();

        if( !string.IsNullOrEmpty(id))
        { 
            ch.Id = id;
            return View(ch);
        }
        //<TODO> : handle when your id parameter is null
        return View(ch);
    }

答案 2 :(得分:1)

编辑您的路线。

routes.MapRoute(
                name: "ChampionID",
                url: "Champion/ChampionById/{x}",
                defaults: new { controller = "Champion", action = "ChampionById", x = UrlParameter.Optional }
            );