我有一个mvc网站,其中指定了默认路由。
我的应用程序中有一个URL定义为:
http://localhost:3729/Information?Cust_ID=1&Cust_IMAGE_ID=2
我不是按照上面的格式显示我的网址,而是采用上面的格式,但是如下所示:
http://localhost:3729/Information/1/2
所以我定义了一条路线:
routes.MapRoute(
name: "Information",
url: "{controller}/{action}/{Cust_ID}/{Cust_IMAGE_ID}",
defaults: new { controller = "Information", action = "Index", Cust_ID = UrlParameter.Optional, Cust_IMAGE_ID = UrlParameter.Optional
});
并将其添加到现有的routeconfig.cs。
这条路线在路线表中排名第二。
当我运行应用程序并访问该页面时,我没有得到我希望的格式。
当我把这条路线放在第一条路线时,我得到了我想要的功能,但是应用程序直接打开了这个页面而不是主页。
如何实现我想要的功能。
我的问题是 - 在路由表中定义的多条路由中,我想将一条路由设为默认路由。
答案 0 :(得分:0)
您有两个主要问题:
http://localhost:3729/Information/1/2
不匹配。要解决这些问题,您应该在默认路线之前定义路线,如下所示。
routes.MapRoute(
name: "Information",
url: "Information/{Cust_ID}/{Cust_IMAGE_ID}",
defaults: new { controller = "Information", action = "Index", Cust_IMAGE_ID = UrlParameter.Optional
});
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
您还使用可选的Cust_ID
参数定义了您的“信息”网址,我猜这是没有任何意义的(除非您希望网址/Information
列出所有客户)。根据您的要求,Cust_IMAGE_ID
可选也可能没有任何意义。
另一方面,如果图像实际显示在页面上,将客户图像ID放入URL似乎是一个坏主意。这意味着用户可以更改URL以提取与当前客户无关的其他客户的图像。