我有一个问题,这是我第一次使用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
(注意:我首先使用默认路线进行尝试,看看网址,我知道我已经把它放在最后)
答案 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解决我的问题,如果......否则我没有说明他有什么问题,因为我已经解决了