routes.maproute

时间:2016-06-01 09:58:14

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

我有一个问题,这是我第一次使用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查看的网址) 默认值(仅在必要时) 在这个maproute中看起来我想要的评论(但这不是我想要的)

可以帮助我吗?

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

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

这将我重定向到FichaRegistros 位于控制器Repositoro 行动Repositorio 并且需要一个id

(注意:我首先使用默认路线进行尝试,看看网址,我知道我已经把它放在最后)

1 个答案:

答案 0 :(得分:0)

好的,我有一个解决方案:

在routes.MapRoute中,我们配置为url: url:" / home / FichaRegistros /" 因为我们想要"捕获"当网址很好的时候。

然后我们定义我们想要它的行为: 默认值:new {controller =" Records" action =" Index"}

表示我们想要将控制器记录转到操作INDEX

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

如果URL指示的话,以相同的方式

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

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

devemos查看我们放置这些"过滤器的顺序"因为如果我们放一个过滤器: 网址:" / home / Cars /" 然后添加一个过滤器 url:" / home / Cars / FichaRegistros /"

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

关于{}中列出的变量 例如: url:" {controller} / {action} /" 在这里我们也可以访问一个控制器,并且任何作为internamenta的动作都保存在变量{controller}中,变量{action}中的驱动程序名称i为动作的名称,然后使用它们来定位驱动程序和相应的动作。我们的计划

我们也可以将自己的变量添加为podira: url:" {controller} / {action} / {ID}"

在这种情况下,我们已经创建了变量或参数ID,你可以在控制器动作中使用它来我们采取这些路线.MapRoute,BEARING IN MINT THAR OF OF OF VARTIONBLE to this to have this like WE已在此处显示

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

通过这种方式,我们指示我们创建的ID参数是可选的,如果没有指示独奏部分entraria UrlParameter.Optional在这种情况下,如果没有,将跳转到下一个检查

很抱歉延迟回答,但嘿嘿认为如果没有davais解决我的问题,如果......否则我没有说明他有什么问题,因为我已经解决了