【发布时间】:2019-06-09 08:59:20
【问题描述】:
我尝试在我的 mvc 项目中使用地图路由,第一个路由“route1”使用两个参数工作正常 http://localhost:43601/records/index/1/5454546
现在第二条路线 - 在同一个控制器上 - 记录控制器 - 不工作“route2” http://localhost:43601/records/attachmentdetails/828/2 并报错:
参数字典包含方法“System.Web.Mvc.ActionResult AttachmentDetails(Int32, Int32)”的不可为空类型“System.Int32”的参数“attId”的空条目
有什么帮助吗?
//route code
routes.LowercaseUrls = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//Web API
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "route1",
url: "{controller}/{action}/{libId}/{recordNo}",
defaults: new { controller = "Records", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "route2",
url: "{controller}/{action}/{attId}/{atype}",
defaults: new { controller = "Records", action = "AttachmentDetails", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default4",
url: "{controller}/{action}/{attId}/{atype}",
defaults: new { controller = "FileManager", action = "BookAttachmnt", id = UrlParameter.Optional }
);
//controllers code
public ActionResult Index(string libId, int recordNo = 0)
{
}
public ActionResult AttachmentDetails(int attId, int atype)
{
BasicSearchAttribute();
return View();
}
【问题讨论】:
-
作为一个附带问题,如果没有名为
id的参数,请删除id = UrlParameter.Optional。
标签: c# asp.net-mvc model-view-controller routing