Перейти к указанной c записи, используя раскрывающийся список в. Net Core MVC - PullRequest
0 голосов
/ 06 августа 2020

Я пробовал различные поисковые запросы Google, но не получил конкретных c результатов.

Проблема проста: у меня есть форма редактирования для записей в таблице. В том же представлении есть раскрывающийся список всех записей в этой таблице. Я хочу использовать этот раскрывающийся список, чтобы перезагрузить форму с выбранной записью из раскрывающегося списка.

Это действие «Получить» для редактирования:

public async Task<IActionResult> Edit(int? id)
{
        if (id == null)
        {
            return NotFound();
        }

        var myObj = await _context.MyObjs.FindAsync(id);
        if (myObj == null)
        {
            return NotFound();
        }

        VMEdit model = new VMEdit
        {
            // populate view model
        };

        var objList = _context.MyObjs.Select(c => new
        {
            Value = c.Id,
            Text = c.Tag,
        }).OrderBy(c => c.Text);
        ViewData["ObjList"] = new SelectList(objList, "Value", "Text", id);

        return View(model);
    }

Это представление:

@model Audit.Models.VMEdit

@{
    ViewData["Title"] = "Edit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<form name="jumpForm" asp-action="Edit" asp-controller="MyObj" method="get">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group form-row">
        <label asp-for="Id" class="col-md-3">Jump to: </label>
        <div class="col-md-6">
            <select asp-for="Id" class="form-control" asp-items="ViewBag.ObjList"></select>
        </div>
        <div class="col-md-3">
            <input type="submit" value="Go" />
        </div>
    </div>
</form>


<form asp-action="Edit">
    // edit form controls here
</form>

Эта форма ведет себя следующим образом:

Предположим, я нахожусь в / MyObj / Edit / 3

Предположим, я выбираю запись с Id = 5 из раскрывающегося списка и нажмите Go

Загружаемая страница /MyObj/Edit/3?Id=5

Страница, которую я собираюсь загрузить, - /MyObj/Edit/5

Я предполагаю, что присвоение имени выбранному поле «Id» заставляет его привязываться к загруженному Id (3). Однако я не знаю, что мне делать. Я хочу, чтобы запрос Get, сгенерированный формой, имел параметр Id со значением 5.

Любая помощь будет принята с благодарностью. Специально простейшее решение, не использующее javascript. Спасибо.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Загружается страница / MyObj / Edit / 3? Id = 5

Страница, которую я собираюсь загрузить, это / MyObj / Edit / 5

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

Чтобы использовать с select2.js, вам нужно только указать ссылку с js и css, а затем добавить select2 метод в js для реализации функции поиска внутри элемента управления select.

Подробнее см. В следующем коде.

 @section Scripts{
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/js/select2.full.min.js"></script>
    <script>
        $(document).ready(function () {
            $("select").select2();
            $("form[name=jumpForm]").submit(function () {
                event.preventDefault();
                location.href = "/MyObj/Edit/" + $("select").val();
            })
        });
        
    </script>
}

Вот результат теста:

введите описание изображения здесь

0 голосов
/ 07 августа 2020

В итоге я использовал этот метод, хотя он неэлегантен. { ссылка }

Я мог бы использовать навигацию с раскрывающимся списком, но я хотел использовать Select2. js с моим раскрывающимся списком, потому что список записей довольно длинный, и я хотел сделать это с возможностью поиска.

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