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

为什么?

Asp.Net MVC 路由,无需控制器和操作 X Web.config

您需要将路由更改为:

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"路由变量的值。此外,控制器和操作的默认值将启动,您将获得所需的结果。