Как я могу остановить ASP.NET HTML MVC. ActionLink от Использования существующих значений маршрута?

РЕДАКТИРОВАНИЕ: как указано @mmyers, этот метод не работает над входом, который содержит подстроки, соответствующие байтам с высоким набором битов ("80" - "FF"). Объяснение в идентификатор Ошибки: 6259307 Byte.parseByte, не работающие, как рекламируется в Документации SDK .

public static final byte[] fromHexString(final String s) {
    byte[] arr = new byte[s.length()/2];
    for ( int start = 0; start < s.length(); start += 2 )
    {
        String thisByte = s.substring(start, start+2);
        arr[start/2] = Byte.parseByte(thisByte, 16);
    }
    return arr;
}

13
задан johnnyRose 27 June 2016 в 17:15
поделиться

2 ответа

Установка значений маршрута как пустая или пустая строка при вызове Html.ActionLink или Html.RouteLink (или любой другой метод создания URL-адресов) очистит значения «внешнего» маршрута.

Например, со стандартным маршрутом контроллера MVC / action / id предположим, что вы находитесь на «Home / Индекс / 123 ". Если вы вызовете Html.RouteLink (new {id = 456}) , тогда MVC заметит "окружающие" значения маршрута controller = "Home" и action = "Index ". Он также заметит значение внешнего маршрута id = "123" , но оно будет перезаписано явным "456". В результате сгенерированный URL-адрес будет «Home / Index / 456».

Порядок параметров также имеет значение. Например, вы вызвали Html.RouteLink (new {action = "About"}) . Действие "About" перезапишет текущее действие "Index", а параметр "id" будет полностью очищен! Но почему, спросите вы? Потому что, как только вы аннулируете сегмент параметра, все сегменты параметра после него станут недействительными. В этом случае «действие» было аннулировано новым явным значением, поэтому «id», который идет после него и не имеет явного значения, также становится недействительным. Таким образом, сгенерированный URL будет просто «Домашняя страница / О программе» (без идентификатора).

В этом же сценарии, если вы вызвали Html.RouteLink (new {action = ""}) , то сгенерированный URL будет просто "Домой"

21
ответ дан 1 December 2019 в 21:24
поделиться

Если вы хотите полностью контролировать ссылку, просто создайте ссылку самостоятельно:

<a href="~/variableA/variableB/<%= Html.Encode(Model.Target) %>">Click Here</a>

Замените все, что вам нужно, в атрибут href .

1
ответ дан 1 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: