【问题标题】:routes.maproute路线.maproute
【发布时间】:2016-09-30 15:05:38
【问题描述】:

我有一个问题,这是我第一次使用 routes.maproute,我遇到了逻辑问题

我有这个代码:

{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
     name: "Default",
     url: "{controller}/{action}/{id}",
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    //Ruta por defecto   --> pa' pruebas
    );



    routes.MapRoute(
      name: "Registro",
      url: "{controller}/{action}/{box}/{reg}"
      //defaults: new { controller = "Repositorio", action = "Registro" }
      //localhost:27105/Home/FichaRegistros/29200604-BCF7-4534-8DE9-00049D41A3E0-->FichaRegistros   -->Repositorio/Registro + id OBLIGATORIA
    );

    routes.MapRoute(
      name: "Repositorio",
      url: "{controller}/{action}/{box}"
      //defaults: new { controller = "Repositorio", action = "Repositorio", }
      //localhost:27105/User/Repositorio/378CE0F6-440A-4C63-BF08-08F760B4840B --> Repositorio  -->Repositorio/Repositorio + id OBLIGATORIA
    );
    routes.MapRoute(
        name: "IsNotLogged",
        url: "{controller}/{action}/{id}",
        defaults: new { action = "IsNotLogged", id = UrlParameter.Optional }
        //localhost:27105/Home/Index   -->   Home/Index -->Repositorio/IsNotLogged
    );
    routes.MapRoute(
        name: "IsLogged",
        url: "{controller}/{action}/{id}",
        defaults: new { action = "IsLogged", id = UrlParameter.Optional }
        //localhost:27105/User/Index  -->  User/Index  -->Repositorio/IsLogged
    );
    routes.MapRoute(
      name: "Localhost",
      url: "{controller}/{action}/",
      defaults: new { controller = "Repositorio", action = "LocalHost" }
      //localhost:27105/   -->User/Login   -->Repositorio/LocalHost
    );
}

但我无法正常工作

每个 MapRoute 有 4 个项目: 名称(maproute 的标识) url(在 MapRoute 中检查的 url) 默认值(仅在必要时) 在此地图路线中查看我想要的评论(但这不是我想要的)

可以帮助我吗?

错误是我没有去我想要的路线,因为我没有看到像 url: "{controller} / {action} / {id}" 这样的逻辑来放置好 comprovaciones 路径,所以他们去了我想要的地方(在每个 MapRoute 的评论中都有说明

例如在路线上:注册 我希望当用户输入如下路径时: // localhost: 27105 / Home / FichaRegistros / 29200604-BCF7-4534-8DE9-00049D41A3E0

这会将我重定向到 FichaRegistros 位于控制器 Repositoro 动作存储库 并且有一个 ID 要求

(注意:我首先使用默认路由只是为了尝试,也看到网址,我知道然后我已经放在最后了)

【问题讨论】:

  • 请告诉我们您遇到了什么错误
  • 您能否在问题中添加您期望的结果以及您得到的错误类型?
  • 错误是我没有去我想要的路线,因为我没有看到像 url 一样放置好 comprovaciones 路径的逻辑:“{controller} / {action} / {id}",所以他们去我想去的地方(在每个 MapRoute 的注释中指出 例如在路线上:注册我希望当用户输入路径时,例如://本地主机: 27105 / Home / FichaRegistros / 29200604-BCF7-4534-8DE9-00049D41A3E0 这将我重定向到位于控制器 Repositoro 操作 Repositorio 中的 FichaRegistros 并且具有必需的 ID

标签: c# sql asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

好的,我有办法:

在routes.MapRoute中,我们配置为url: url:"/home/FichaRegistros/" 因为我们想在 url 指向良好时“捕获”。

然后我们定义我们希望它的行为方式: 默认值:新 {controller = "Records" action = "Index"}

有指示我们要到控制器记录中去操作INDEX

这样我们就可以捕获我们需要的 cualquer 路由并将其发送到我们想要的控制器和操作:

如果 URL 指示,则以相同的方式: 网址:“{controller} / {action} /”

我们表示我们想要抓取任何控制器和任何动作,也就是说: 如果 url 是:localhost:45663 / CCCC / YYYY / XXXX routes.MapRoute,将CCC解释为控制器并愤怒地寻找我们的程序, 与 interara 在控制器 AAA CCC 中寻求动作的方式相同 以及作为参数 XXX

devemos 查看我们放置这些“过滤器”的顺序,因为例如,如果我们放置一个过滤器: url:“/家/汽车/” 然后添加一个过滤器 url: "/home/Cars/FichaRegistros/"

永远不会到达 FICHAREGISTROS 页面,因为 1 通过过滤器 start / cars 以及如何通过那里,它捕获并 sige 不再寻找是否更具体,好像只是寻找满足条件,没有注意是否更详细

关于 {} 中列出的变量 例如: 网址:“{控制器}/{动作}/” 在这里我们访问一个控制器,任何作为内部的动作都保存在变量 {controller} 中的驱动程序名称 i 在变量 {action} 中的动作名称,然后使用它们来定位驱动程序和相应的动作我们的计划

我们也可以像podira那样添加自己的变量: 网址:“{controller} / {action} / {ID}”

在这种情况下,我们已经创建了变量或参数 ID,您可以在控制器操作中使用它,我们将使用此路由。MapRoute,请记住,变量内的操作必须像我们一样调用此处已注明

它们也可以是并非总是需要的变量,因此在相同条件之间是否存在任何变量表明: 默认值:新 {action = "IsNotLogged" id = UrlParameter.Optional}

这样,我们表明我们创建的ID参数,是可选的,如果不是indicaramos独奏部分entraria UrlParameter.Optional在这种情况下,如果没有,将跳转到下一个检查

抱歉延迟回答,但他们认为如果不是 davais 可以解决我的问题,如果 ... 否则我不会指出他遇到的问题以及我已经解决的问题

【讨论】:

  • 一问一答都没用
猜你喜欢
  • 2016-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2011-06-16
  • 2011-07-22
  • 1970-01-01
相关资源
最近更新 更多