Борьба с получением SelectedAlertIndex (int) со страницы просмотра AspNetCore MVC:
@{
<h4>@Model.Alerts.Count Alerts</h4>
<form asp-controller="Alerts" asp-action="LoadAlert" method="post">
<select asp-for="SelectedAlertIndex" asp-items="@Model.Alert_Identifiers">
<option>Select one</option>
</select>
<br />
<input type="submit" name="LoadAlert" value="LoadAlert" />
</form>
}
через AlertsController.cs:
[HttpPost]
public IActionResult LoadAlert(Alert obj, string LoadAlert)
{
if (!string.IsNullOrEmpty(LoadAlert))
{
ViewBag.Message = "Alert loaded successfully";
}
return RedirectToAction("Index", "Alerts")
}
в цикл @foreach внутри таблицы в представлениях / оповещениях/Index.cshtml:
@model IEnumerable<edxl_cap_v1_2.Models.ContentViewModels.Alert>
…
<table id="elementTable" class="smallText">
@foreach (var item in Model)
{
@*@while(item.AlertIndex == item.SelectedAlertIndex)
{*@
<tr>
Без вложенного цикла @ while, таблица строк, по одной для каждого элемента данных, отображает все три записи по 13 элементов данных в каждой, но мне нужно отобразитьнабор из 13 элементов данных для одной выбранной записи с использованием значения int для AlertIndex, выбранного из выпадающего списка Select Tag Helper.Если я раскомментирую цикл @ while, отображается только граница элемента elementTable без строк.Это также происходит, когда я пытаюсь добавить предложение «Where» в цикл @foreach:
@foreach (var item in Model.Where(item => item.AlertIndex == item.SelectedAlertIndex))
{
Я пытаюсь показать только соответствующий код для проблемы, но на всякий случай, вот основная модель:
public class AlertViewModel
{
public int SelectedAlertIndex { get; set; }
public List<SelectListItem> Alert_Identifiers { get; set; }
public List<AlertVm> Alerts { get; set; }
}
public class AlertVm
{
[Key]
public int AlertIndex { get; set; }
[MaxLength(150)]
public string Alert_Identifier { get; set; }
}
Я решил, что, вероятно, нет необходимости показывать класс Alert из 13 элементов, которые я добавил в модель представления из исходного класса Alert.cs.