gpt4 book ai didi

c# - 路由在 mvc 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:24:27 26 4
gpt4 key购买 nike

我有这个操作方法:

 public virtual ActionResult NewsByCategory(int code)
{...}

我有两个这样的路由器:

routes.MapRoute("lang",
"{lang}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "CMS.mvcApp.Controllers" });

routes.MapRoute("langCode",
"{lang}/{controller}/{action}/{code}",
new { controller = "Home", action = "Index", code = UrlParameter.Optional },
new[] { "CMS.mvcApp.Controllers" });

我有以下请求:

locallhost:3354//En/News/NewsByCategory/12345

enter image description here

我收到这个错误:

The parameters dictionary contains a null entry for parameter 'code' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult NewsByCategory(Int32)' in 'CMS.mvcApp.Controllers.NewsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter

为什么它不起作用?

最佳答案

MVC 正在使用您在 route.config 中声明的第一条路线文件。 MVC 的工作方式是,一旦找到任何匹配项routes 它不会在你的配置中寻找下一个声明的路由。那么你应该总是在列表的顶部添加最具体的路线,并且最列表底部的通用路由。

您还可以使用参数类型的约束。

http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-route-constraint-cs

关于c# - 路由在 mvc 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com