问题描述
routes.MapRoute("第一条路由","{controller}/{action}/{identity}",new{controller="Home",action="Index",identity=UrlParameter.Optional});routes.MapRoute("第二条路由",//路由名称"{controller}/{action}/{currentPage}/{pageSize}",new{controller="Home",action="Index",currentPage=1,pageSize=20});现在定义了这两条路由,访问这个地址是没问题的.http://localhost:28056/Article/Details/8cfcc82e-4f76-4842-ad8a-5397e2f51acd但是这样.http://localhost:28056/Article/List就有问题了.但是我输入把第一条路由注释掉的话,http://localhost:28056/Article/List没问题,但是http://localhost:28056/Article/Details/8cfcc82e-4f76-4842-ad8a-5397e2f51acd这个就挂了.这个是什么问题,谁知道吗?
解决方案
解决方案二:
该回复于2011-12-20 15:12:47被版主删除
解决方案三:
但是我输入把第一条路由注释掉的话,http://localhost:28056/Article/List没问题,但是http://localhost:28056/Article/Details/8cfcc82e-4f76-4842-ad8a-5397e2f51acd这个就挂了.这个时候controller="Article",action="Details",currentPage=8cfcc82e-4f76-4842-ad8a-5397e2f51acd,pageSize=20应该是你程序对curentPage的值处理的时候出错的.
解决方案四:
晕,那应该怎么定义路由呢?楼上?
解决方案五:
不清楚你的具体情况是什么不过暂时可以这样做:设置一个默认值.routes.MapRoute("第一条路由","{controller}/{action}/{identity}",new{controller="Home",action="Index",identity=UrlParameter.Optional},new{action="Details"});routes.MapRoute("第二条路由",//路由名称"{controller}/{action}/{currentPage}/{pageSize}",new{controller="Home",action="Index",currentPage=1,pageSize=20},new{action="List"});
解决方案六:
另:你的~/Article/List页面上.处理url上面currentPage参数的时候.判断下是否可以转化成数字,要不然挂掉多不好啊.
解决方案七:
我的Controller上的方法publicActionResultList(intcurrentPage,intpageSize)算是转化成数字了吧.
解决方案八:
其实mvc里面int参数用int?类型比较好.
解决方案九:
MVC不是还是C#语言写的吗?还是.NET框架,为何int类型用int?比较好?谢谢
解决方案十:
该回复于2011-12-22 09:38:24被版主删除
解决方案十一:
publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Home","{Controller}/{Action}",new{Controller="Home",Action="Index"});routes.MapRoute("PhotoDetails","{Controller}/{Action}/{identity}",new{Controller="Home",Action="Details",identity=UrlParameter.Optional},new{Action="Details"});routes.MapRoute("List",//路由名称"{Controller}/{Action}/{currentPage}/{pageSize}",//带有参数的URLnew{Controller="Home",Action="List",currentPage=1,pageSize=20},//参数默认值new{Action="List"});}
已经加了路由参数的约束值,但是还是不行..