Я пробовал различные поисковые запросы 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. Спасибо.