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
)很抱歉,我这边出了一个错误。现在一切都好了