Как получить значение идентификатора из элемента SelectList в Razor Pages?

Я новичок в веб-программировании в целом и пытаюсь создать простую страницу ввода данных с помощью Razor Pages на ASP.Net Core 3.0.

У меня возникли проблемы с SelectList в теге. Поведение, которое я пытаюсь получить, заключается в захвате значения идентификатора из SelectList в представлении, которое просто отказывается работать правильно, по крайней мере, в методе OnPost.

Вот мой код:

Сопоставление таблиц

Получить нужные мне записи с помощью FromSqlRaw

Основная таблица и список элементов в виде IEnumerable

Код в представлении как SelectList

Как список выглядит на реальном сайте

Что мне действительно нужно, так это зафиксировать значение идентификатора (IDCON) элемента списка и отправить его в связанное свойство в asp-for, но по какой-либо причине возвращаемое значение всегда равно нулю. Любые идеи о том, что я делаю неправильно или, возможно, другой подход?

Любая помощь будет принята с благодарностью.

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
445
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Можно попробовать добавить [BindProperty], вот рабочая демка с фейковыми данными.

cshtml:

<form method = "post">
    <label asp-for = "registro.IDCON">Consecuencia</label>
    <select asp-for = "registro.IDCON" asp-items = "@(new SelectList(Model.consecuencias,"IDCON","DSCCON"))">
        <option value = "">---Elegir Consecuencia---</option>
    </select>
    <span asp-validation-for = "registro.IDCON" class = "text-danger"></span>
    <input type = "submit" value = "submit"/>
</form>

cshtml.cs:

public class TestIDCONModel : PageModel
    {
        [BindProperty]
        public ROCONSEC registro { get; set; }
        [BindProperty]
        public List<ROCONSEC> consecuencias { get; set; }
        public IActionResult OnGet()
        {
            consecuencias = new List<ROCONSEC> { new ROCONSEC { IDCON = 1, DSCCON = "PROCESO RALENTIZADO" }, new ROCONSEC { IDCON = 2, DSCCON = "PROCESO DESTRUIDO" } };
            return Page();
        }
        public IActionResult OnPost()
        {
            int IDCON = registro.IDCON;
            return Page();
        }
    }

результат:

Спасибо за ваш ответ.

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

При этом именно ваш вклад привел меня к этому осознанию, когда я использовал Request.Form[""] для проверки того, передается ли какое-либо значение из представления в виртуальную машину, что показалось мне странным, поскольку это было так, но acceptValue в ModelState был нулевым. Я перепроверил весь свой код и, наконец, исправил проблему, теперь моя страница работает как положено.

Ваше здоровье!

Другие вопросы по теме