ASP. Net Core C# Выбрать опцию Перенаправить Изменить выбранную опцию - PullRequest
0 голосов
/ 16 апреля 2020

Я смог отсортировать по возрастанию и по убыванию по имени и цене в моем ASP. Net основном приложении, которым я доволен. Я использую HTML выбор и возвращаю эту опцию в контроллер, который работает отлично. Мое единственное замечание заключается в том, что каждый раз, когда я щелкаю один из параметров, по-прежнему по умолчанию используется первый параметр:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
            <option value="@Url.Action("Spain", new {order="name"})">
                Name Ascending (A-Z)
            </option>
            <option value="@Url.Action("Spain", new {order="name_desc"})">
                Name Descending (Z-A)
            </option>
            <option value="@Url.Action("Spain", new {order="price"})">
                Price Ascending (€)
            </option>
            <option value="@Url.Action("Spain", new {order="price_desc"})">
                Price Descending (€)
            </option>
        </select>

Я хотел бы изменить выбранный параметр при загрузке страницы на один я только что выбрал для сортировки объектов. Я понимаю, что это осложняется тем фактом, что я технически перенаправляю на новую страницу, но я не могу добиться того, чего хочу, с помощью jQuery или даже базы JS, поскольку она не регистрирует ?order=name_desc et c. в URL.

Заранее благодарим за любую помощь!

1 Ответ

0 голосов
/ 16 апреля 2020

В onchange событии select вы можете передать выбранный индекс в действие:

<select id="select1" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value+'&selectedIndex='+this.options[this.selectedIndex].index);">

В действии получить индекс из строки запроса, отправить для просмотра с помощью Viewbag:

public ActionResult Spain(string order ,string selectedIndex)       
{
    ....
    ViewBag.selectedIndex = selectedIndex;
    return View();
}   

На этой странице после загрузки DOM вы можете установить выбранное значение индекса, используя JQuery:

@section Scripts{ 
    <script>
        $(function () {            
            if (@ViewBag.selectedIndex !=null) {
                $("#select1").prop('selectedIndex', @ViewBag.selectedIndex);
            }

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