我在MVC中传递值来回控制器和视图。问题是,如果可能的话,我想隐藏我看到它的用户的URL /地址栏中的变量名。我已经尝试过路由配置并执行如下操作:
routes.MapRoute(
name:="Default2",
url:="{controller}/{action}",
defaults:=New With {.controller = "home", .action = "Lookup"}
)
routes.MapRoute(
name:="Default",
url:="{controller}/{action}/{id}",
defaults:=New With {.controller = "home", .action = "Lookup", .id = UrlParameter.Optional}
)
我也在下面试过,我知道这看起来很荒谬,但无论如何我都试过了。
routes.MapRoute(
name:="Default2",
url:="{controller}/{action}",
defaults:=New With {.controller = "home", .action = "Lookup"}
)
routes.MapRoute(
name:="Default",
url:="{controller}/{action}/{id&name}",
defaults:=New With {.controller = "home", .action = "Lookup", .id = UrlParameter.Optional}
)
我试过了两个。它不是隐藏我在控制器中作为参数传递的变量,而是隐藏我的控制器和操作,只显示变量名称。
http://localhost:11111/?id=P59068&name=Nurul
我希望它会显示如下:
http://localhost:11111/home/Lookup/P59068&Nurul
我已经看过几个上面显示的网站,但我不知道我做的事情是否是实现我想要的正确的事情。我究竟做错了什么?有人可以帮帮我吗?
答案 0 :(得分:1)
无法生成/home/Lookup/P59068&Nurul
,但您可以通过将/home/Lookup/P59068/Nurul
路由更改为
Default2
routes.MapRoute(
name:="Default2",
url:="home/lookup/{id}/{name}",
defaults:=New With {.controller = "home", .action = "Lookup"}
)
这需要在Default
路线或任何其他匹配路线之前。
url
属性(/{id}/{name}
)中最后2个段的附加值意味着这些值被添加为路由值而不是查询字符串参数
另请注意,您可以使用/Lookup/P59068/Nurul
生成url:="lookup/{id}/{name}"
(不带“home”前缀)