2017-01-25 3 views
1

Я передаю контроллер ценности и просмотра в 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} 
) 

Я пробовал оба. Вместо того, чтобы скрывать переменную i, переданную в качестве параметров в контроллере, она скрывает мой контроллер и действие и просто показывает имя переменной.

http://localhost:11111/?id=P59068&name=Nurul 

Я надеялся, что это будет отображаться как это вместо:

http://localhost:11111/home/Lookup/P59068&Nurul 

Я видел несколько сайтов, показывающих, как описано выше, но я не знаю, что я делаю это правильно, чтобы достичь того, чего я хочу. Что я делаю не так? Кто-нибудь может мне помочь?

+0

Возможно, это _Url: = "{controller}/{action}/{id}/{name}" _ – Steve

+0

Вы не можете получить '/ home/Lookup/P59068 & Nurul', но вы можете получить'/home/Lookup/P59068/Nurul' - это приемлемо? –

+0

@StephenMuecke thats достаточно хорошо – Nurul

ответ

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 маршрута или любых других согласующих маршрутов.

Дополнительный из последних 2-х сегментов в url собственности (/{id}/{name}) означает, что эти значения добавляются в качестве значений маршрута, а не параметров строки запроса

Примечание также можно сгенерировать /Lookup/P59068/Nurul (без префикса «домашнего» использования url:="lookup/{id}/{name}")

+0

Я пробовал, но он по-прежнему показывает мои имена переменных в адресной строке – Nurul

+0

Тогда вы не перенесли этот маршрут первым - если бы вы использовали '@ Html.ActionLink (" xxx "," Lookup " , "Home", new {id = "P59068", name = "Nurul"}, null) 'в представлении, он будет генерировать'/home.lookup/P59068/Nurul' –

+0

Где я могу это поставить? Во всех взглядах? Где именно? На кнопке, которая передает эти значения контроллеру? – Nurul

Смежные вопросы