如何从地址网址栏隐藏我的变量名称?

时间:2017-01-25 08:12:16

标签: asp.net-mvc vb.net visual-studio-2015

我在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

我已经看过几个上面显示的网站,但我不知道我做的事情是否是实现我想要的正确的事情。我究竟做错了什么?有人可以帮帮我吗?

1 个答案:

答案 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”前缀)