Url.Action, как переопределить параметр из контекста? - PullRequest
0 голосов
/ 22 марта 2020

Вот как я это делаю прямо сейчас:

// Snippet 1
var indexUrl = Url.Action("Index", new {id = " "}).Replace("%20", string.Empty);

Поскольку вы можете сделать вывод из приведенного выше кода, у меня есть контроллер, давайте назовем его Home, с методом индекса, который имеет необязательный идентификатор .

Этот код:

// Snippet 2
var indexUrl = Url.Action("Index", new {id = 123 });

производит "/ home / 123", чего я и ожидаю. Однако этот код:

// Snippet 3
var indexUrl = Url.Action("Index");

не просто возвращает "/ home", как я бы подумал. Вместо этого я получаю один из этих двух результатов:

1) Если я уже нахожусь на странице "/ home / 123", код из фрагмента 3 будет по-прежнему возвращать "home / 123", потому что из того, что я прочитал Action .Url выберет «id» из контекста запроса.

2) Если я нахожусь на другой странице, я даже не получаю «/ home», но пустое значение.

Как Вы можете видеть в коде из фрагмента 1, мое временное исправление состоит в том, что я добавляю пробел в параметре id, а затем удаляю его методом замены перед использованием URL, что довольно уродливо.

Ответы Я уже рассмотрел обзор, который, кажется, подразумевает, что это все задумано, но это ответы 2012 года, поэтому я надеюсь, что новые / лучшие способы, чем описанные выше, сделали это. Net Core? Все, что мне нужно, это возможность сообщить Url.Action, что я хочу, чтобы id был нулевым, чтобы он мог просто возвращать базовый путь без необязательного параметра, в данном случае "/ home"

...