0

我在 ASP.NET MVC4 中的应用程序我有:

    <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

为什么?

4

2 回答 2

1

您需要将路由更改为:

routes.MapRoute(
                name: "Abcdef",
                url: "{action}/{conte}",
                defaults: new { controller = "CampanhaResposta", action = "Resposta", conte = UrlParameter.Optional}
            );

它将返回:www.website.com/Resposta

于 2013-10-14T18:44:36.097 回答
0

当你得到www.website.com/mycode时,路由认为“mycode”是一个控制器名称。即使您已经为“controller”和“action”路由参数提供了默认值,它们也不会被使用,因为url: "{controller}/{action}/{conte}"最后需要“conte”。您将不得不更改 url 模板。

例如,如果您将其更改为

url: "{conte}/{controller}/{action}"

然后www.website.com/mycode再次获取,“mycode”将被正确地视为“conte”路由变量的值。控制器和动作的默认值也将生效,您将获得您想要的结果。

于 2013-10-14T23:51:40.583 回答