Дополнительный параметр для коллекции сортировки страниц индекса

0

У меня есть страница, которая предоставляет объекты Question как набор <div>. (Я также использую Pagination, но я не думаю, что это имеет какое-либо значение для этой конкретной проблемы).

Я хотел бы дать пользователю возможность выбрать заказ, в котором элементы отображаются (например, порядок основного списка вопросов.

Я полагал, что использование списка <select> было бы простым способом, но, похоже, оно не работает. Я в основном борется с вызовом Action от моего контроллера из Javascript. Это то, что у меня есть до сих пор:

Мой HTML:

<select id="sort-select" style="margin-bottom: 10px">
    @foreach (SortingType value in Enum.GetValues(typeof (SortingType)).Cast<SortingType>())
    {
        <option value="@((byte)value)">@(value.ToString())</option>
    }
</select>

(SortingType - это перечисление, состоящее из 3 констант.)

Мой JavaScript:

function AddSort() {
    var select = document.getElementById('sort-select');

    select.onchange = function(event) {
        var selected = select.options[select.selectedIndex].value;

        var url = encodeURI("@Url.Action("Index", new {topicId = ViewBag.TopicId, sort = 0})");
        url.replace('&amp;', '&');
        url.replace(0, selected);

        window.location.href = url;
    }
}

Это, конечно, вызывается в документе.

Проблема в том, что при запуске JS он формирует все амперсанды (&) к их экранированному эквиваленту (&). Конечно, это не работает, потому что параметры для действий контроллера разделены чистыми амперсандами.

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

http://localhost:41084/Question?topicId=-1&amp;sort=0

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

Теги:
asp.net-mvc
action

1 ответ

0

Найденное решение должно было сделать url = url.replace(...) вместо простого url.replace(...) !

Теперь мой javascript выглядит так:

function AddSort() {
    var select = document.getElementById('sort-select');

    select.onchange = function(event) {
        var selected = select.options[select.selectedIndex].value;

        var url = encodeURI("@Url.Action("Index", "Question", new {topicId = ViewBag.TopicId, sort = 0})");
        url = url.replace('&amp;', '&');
        url = url.replace(0, selected);

        window.location.href = url;
    }


}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню