Url.Action только отображает контроллер и действие, но не id - PullRequest
6 голосов
/ 18 января 2010

Мне нужно отобразить URL для поиска JavaScript, который я делаю. К сожалению, Url.Action отображает не только действие, но и текущий идентификатор. Это происходит, когда в данный момент на странице используется действие с идентификатором.

Для иллюстрации Url.Action("List", "Org"); сначала отрендерит Org/List, из которого я могу добавить организацию в список. Однако после перемещения местоположения на Org/List/12345 Url.Action("List", "Org"); будет отображаться Org/List/12345, и добавление к нему создает проблему, в результате которой я получаю Org/List/12345/6789.

Есть ли другой способ, который я могу использовать, кроме Url.Action? Я думал об использовании JavaScript для проверки количества / и об удалении части строки, но это выглядит немного странно.

// appears in my Site.Master & utilizes the AutoComplete plugin for jQuery
$(document).ready(function() {
    $("input#FindOrg").autocomplete('<%= Url.Action("Find", "Org") %>', {
        minChars: 3,
        maxItemsToShow: 25
    }).result(function(evt, data, formatted) {
        var url = '<%= Url.Action("List", "Org") %>/';
        window.location.href = url + data;
    });
});

Ответы [ 2 ]

12 голосов
/ 18 января 2010

Пара предложений:

Что произойдет, если вы используете Url.Action("Find", "Org", new { id = "" })?

В качестве альтернативы попробуйте вручную создать URL с помощью Url.Content("~/Find/Org").

0 голосов
/ 18 января 2010

Вы можете «обмануть» и получить доступ к записям «Контроллер» и «Действие» в Словаре маршрутизации. Это позволит вам создать только ту часть URL, которая вам нужна. Единственное предостережение в том, что если вы измените свою модель маршрутизации, эти процедуры могут стать неверными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...