У меня есть приложение с раскрывающимся меню, и я хочу, чтобы выбранное значение из раскрывающегося списка обновляло мою модель, но по какой-то причине этого не происходит.Я всегда получаю пустое значение при маршрутизации на мой метод IActionResult.
Модель:
public class MyModel
{
public string Name{ get; set; }
public List<SelectListItem> MyNames { get; set; }
}
Просмотр:
<label asp-for="Name" class="control-label col-md-3"></label>
<div class="col-sm-9">
<select asp-for="Name" asp-items="Model.MyNames" class="form-control"></select>
</div>
<span asp-validation-for="Name" class="text-danger"></span>
<span class="text-right">
<a class="btn btn-info btn-lg btn-block" type="submit"
asp-action="LoadData"
asp-controller="MyController" ,
asp-route-Name="@Name">Load Person</a>
</span>
Контроллер:
public IActionResult Create()
{
var names = GetNamesFromFile(fileName);
var myModel = new MyModel();
foreach (var name in names)
{
myModel.MyNames.Add(new SelectListItem() { Value = name, Text = name});
}
return View(myModel);
}
public IActionResult LoadData(string Name)
{
var person = GetPersonByName(Name);
return RedirectToAction(nameof(Index), "MyController", new { id = template.PersonId });
}
Когда я возвращаюсь к своему ActionResult, я ожидаю, что параметр Name будет иметь значение, которое я установил в раскрывающемся меню.Код кажется мне подходящим, я не могу понять, почему он не будет работать.
РЕДАКТИРОВАТЬ: Очевидно, проблема заключается в кнопке Отправить.Если я использую тег href, форма не будет отправлена, а выпадающий список вообще не будет вызван.Можно ли как-нибудь сделать эту работу тегом href?