C# asp.net MVC路由eror 404

C# asp.net MVC路由eror 404,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我不懂ASP.net的根;我错过了什么? 这是我的根: routes.MapRoute( name: "ChampionID", url: "Champion/ChampionById/id", defaults: new { controller = "Champion", action = "ChampionById", id = "5" } ); 这是我的控制器: p

我不懂ASP.net的根;我错过了什么? 这是我的根:

 routes.MapRoute(
                name: "ChampionID",
                url: "Champion/ChampionById/id",
                defaults: new { controller = "Champion", action = "ChampionById", id = "5" }
            );
这是我的控制器:

public class ChampionController : Controller
{
    public ActionResult ChampionById(string x)
    {
        ChampionId ch = new ChampionId();
        ch.Id = x;
        return View(ch);
    }

如果您能帮助我,我将非常感激

忘记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文件。

将路由更改为下面的路径,以适合您的操作结果,如下所示:

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);
    }
公共类ChampionController:Controller
{
public ActionResult ChampionById(字符串id)
{
ChampionId ch=新ChampionId();
如果(!string.IsNullOrEmpty(id))
{ 
ch.Id=Id;
返回视图(ch);
}
//:id参数为null时的句柄
返回视图(ch);
}
编辑您的路线

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

您在浏览器中输入的URL是什么?您返回一个名为
ChampionById
的视图,是否有具有该名称的视图?它必须是
URL:“Champion/ChampionById/{id}”,
谢谢这对我有用我会编辑帖子=)@MaroineAbdellah很高兴它对你有帮助。如果它对你有帮助,请接受作为答案。看看你之前的问题,你还没有接受任何答案。这将使人们在将来的问题上不再回答你:)请保持SO精神,接受答案。谢谢=)感谢此属性,您可以强制他选择正确的路线(这是经过测试的,并且有效)