Получить значения маршрута в Razor Pages

Я хочу знать, как получить значения маршрута в Razor Pages (Page.cshtml). Бывший. https://localhost:44320/AdminPanel/Admins если бы я использовал MVC, я бы получил эти данные как

var controller = ViewContext.RouteData.Values["Controller"]; //AdminPanel
var action = ViewContext.RouteData.Values["Action"]; //Admins

Как я могу получить эти значения в Razor Pages?

Для тех, кто пытается получить его, вы можете получить его:

var fullRoute = ViewContext.RouteData.Values["Page"]; // AdminPanel/Admin

person Ertan Hasani    schedule 06.05.2018    source источник
comment
У вас нет контроллера в Razor Pages. Что конкретно вы пытаетесь получить?   -  person Shyju    schedule 06.05.2018
comment
@Shyju Я пытаюсь получить это значение Admins или полный маршрут AdminPanel/Admins на странице. Я попробовал и обнаружил, что могу получить AdminPanel/Admins за ViewContext.RouteData.Values["Page"];   -  person Ertan Hasani    schedule 06.05.2018


Ответы (1)


Предполагая, что у вас есть страница с именем AdminPanel.cshtml в папке Pages, добавьте параметр после @page в первой строке, например:

@page "{action}"

Затем в коде позади (AdminPanel.cshtml.cs) добавьте свойство и параметр к вашему методу OnGet следующим образом:

private string _action;

public void OnGet(string action) {
  _action = action; //now do whatever you want with it
}

Вы можете добавить геттер, если хотите получить к нему доступ в своей модели, на странице cshtml.

Примечание. выполнение описанных выше действий приведет к тому, что для этой страницы потребуется указать действие. Кроме того, вы также можете сделать его необязательным, добавив вопросительный знак (@page "{action?}") и установив значение по умолчанию в вашем OnGet (OnGet(string action="")).

person Bodacious    schedule 20.07.2018