ASP.NET MVC路由:如何创建我的MVC URL';s有.aspx分机吗?
我希望MVC应用程序有.aspx页面URL,即使没有任何物理aspx页面,我也会使用Razor视图引擎 1) 有可能定义这样一条路线吗 2) 如果我想要一个url,比如下面给出的url,那么该路线会是什么样子的:ASP.NET MVC路由:如何创建我的MVC URL';s有.aspx分机吗?,asp.net,asp.net-mvc,routing,asp.net-mvc-routing,asp.net-routing,Asp.net,Asp.net Mvc,Routing,Asp.net Mvc Routing,Asp.net Routing,我希望MVC应用程序有.aspx页面URL,即使没有任何物理aspx页面,我也会使用Razor视图引擎 1) 有可能定义这样一条路线吗 2) 如果我想要一个url,比如下面给出的url,那么该路线会是什么样子的: http://example.com/controller/action.aspx 或者 http://example.com/controller/action.aspx/id 或者 http://example.com/controller/action.aspx/id ht
http://example.com/controller/action.aspx
或者
http://example.com/controller/action.aspx/id
或者
http://example.com/controller/action.aspx/id
http://example.com/controller/action.aspx?queryParam1=value&queryParam2=value
(等等…)
更新
我意识到我希望URL是这样的:
http://example.com/controller/id.aspx
routes.MapRoute(
"Default",
"{controller}/{action}.aspx/{id}",
new { controller = "Home", action = "Index" }
);
换句话说,我不希望指定具体的操作。默认操作将处理所有请求
另一次更新
我在路由配置中指定的是:
routes.MapRoute(
name: "Default",
url: "{controller}/{id}.aspx",
defaults: new { controller = "Foo", action = "Index", id = "default" }
);
然而,尽管上述路由确实适用于指定Id的Url,例如下面的Url:
http://example.com/foo/bar.aspx
当未指定Id时,它不起作用,例如在以下情况下:
http://example.com/foo/
如果它会影响所有路由,您可以将默认路由更改为如下所示:
http://example.com/controller/id.aspx
routes.MapRoute(
"Default",
"{controller}/{action}.aspx/{id}",
new { controller = "Home", action = "Index" }
);
如果您只想将其用于特定的路由,则可以添加一个类似于上述路由的附加路由,但其名称不是Default
,并保持默认路由不变。然后,您可以在需要时通过其名称使用新的路由模式
更新:
我还没有尝试过这个,所以我不确定,但这就是我要尝试的:
routes.MapRoute(
"Default",
"{controller}/{id}.aspx",
new { controller = "Home", action = "Index" }
);
您必须修改action参数的默认值,以便它与您的操作的类型匹配
另一个更新:
要解决这个问题,我相信你必须有两条路线。第一个路由应该需要一个ID,并且不指定默认ID。如果该路由不匹配,如第二个示例中所示,我们将使用第二个路由:
routes.MapRoute(
"DefaultWithId",
"{controller}/{id}.aspx",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/",
new { controller = "Home", action = "Index" }
);
重要的是,最具体的路线首先出现,然后再退回到越来越不具体的路线,因为您的路线将被自上而下地读取,一旦找到匹配项,就会使用该路线。谢谢。再过9分钟,我会把你的答案记为正确答案。:-)@很高兴它起了作用!我把问题改了一点。我意识到我想要另一种。请复习,我就是这么做的。当我指定默认操作时,它不起作用。请查看我的更新到我的更新。:-)@水冷器不用担心,简单的解决方案通常(讽刺地)也是最容易被忽视的。