Asp.Net MVC 路由,无需控制器和操作 X Web.config
本文关键字:操作 Web config 控制器 MVC Net 路由 Asp | 更新日期: 2023-09-27 18:35:21
我在 MVC4 ASP.NET 中的应用程序我有:
<authentication mode="Forms">
<forms loginUrl="~/Logon/Autentica" timeout="120"></forms>
</authentication>
路线:
routes.MapRoute(
name: "Abcdef",
url: "{controller}/{action}/{conte}",
defaults: new { controller = "CampanhaResposta", action = "Resposta" }
);
网络配置:
<location path="CampanhaResposta/Resposta">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
它不起作用:www.website.com/mycode
但它正在起作用:www.website.com/CampanhaResposta/Resposta/mycode
为什么?
您需要将路由更改为:
routes.MapRoute(
name: "Abcdef",
url: "{action}/{conte}",
defaults: new { controller = "CampanhaResposta", action = "Resposta", conte = UrlParameter.Optional}
);
它将返回:www.website.com/Resposta
当你得到www.website.com/mycode
时,路由认为"mycode"是一个控制器名称。即使您为"控制器"和"操作"路由参数提供了默认值,也不会使用它们,因为url: "{controller}/{action}/{conte}"
期望最后一个"conte"。您必须更改网址模板。
例如,如果将其更改为
url: "{conte}/{controller}/{action}"
然后再次获得www.website.com/mycode
,"mycode"将正确被视为"conte"路由变量的值。此外,控制器和操作的默认值将启动,您将获得所需的结果。