Asp.net mvc 5 ASP.NETMVC:引发异常的路由问题

Asp.net mvc 5 ASP.NETMVC:引发异常的路由问题,asp.net-mvc-5,Asp.net Mvc 5,我有一个测试控制器,其中我有一个索引操作,它接受custid作为参数 这就是我的控制器的外观 public class TestController : Controller { // GET: Test public ActionResult Index(int custid) { return View(); } } 我在route.config文件中添加了一条额外的路由语句 public class RouteConfig { pu

我有一个测试控制器,其中我有一个索引操作,它接受
custid
作为参数

这就是我的控制器的外观

public class TestController : Controller
{
    // GET: Test
    public ActionResult Index(int custid)
    {
        return View();
    }
}
我在route.config文件中添加了一条额外的路由语句

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "custom1",
            url: "{controller}/{id}",
            defaults: new { controller = "Test", action = "Index", custid = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
因此,当使用url访问测试控制器操作时,如localhost:50675/test/101,则会出现错误。错误消息说

参数字典包含参数“custid”的空条目 方法的不可为Null的类型“System.Int32” 中的“System.Web.Mvc.ActionResult索引(Int32)” “WebAPICRUD.Controllers.TestController”。必须输入可选参数 引用类型、可为null的类型或可声明为可选类型 参数参数名称:参数

但当使用url访问测试控制器操作时,如localhost:50675/test?custid=101,则不会出现错误

所以我不明白代码中有什么错误


我需要做的是,作为一个结果,我可以发出这个网址应该工作。请引导我。谢谢

您的路由定义需要包含
custid
(而不是
id
)的段,以匹配参数的名称。路由定义还应包含控制器的名称,以使其唯一

routes.MapRoute(
名称:“custom1”,
url:“Test/{custid}”,//修改
默认值:新建{controller=“Test”,action=“Index”}
);

请注意,您还可以删除
custid=url参数。可选
,因为您不希望它是可选的

很抱歉,这是一个打字错误和非常严重的错误。谢谢,先生,解决方案不起作用。请在您身边创建一个控制器,它将有一个索引操作和一个custid参数,并在路由配置文件中进行必要的更改,然后运行…必须看到解决方案不起作用。我会按照您的解释进行更改,但现在当我发布此url时,出现错误“HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下url并确保其拼写正确。”我给出的代码工作正常(我不知道您还犯了哪些错误),并且它的
url localhost:50675/test/101
与路由匹配(而不是
test?101
)很抱歉,我这边出了一个错误。现在一切都好了