использование параметров выбора для получения значения в asp.net страница бритвы

#asp.net-core #razor

#asp.net-ядро #razor

Вопрос:

Я хочу создать опцию выбора для ввода одного из нескольких фиксированных значений и вернуть соответствующее значение переменной, аналогичное тому, как вводятся текстовые поля, как мне это сделать? Это была моя попытка, <input type="text"> работает нормально, но выбранные типы возвращают значение null.

 <div class="text-center">
    <h1 class="display-4">Add new patient</h1>
    <form method="post">
        <input type="text" asp-for="patientModel.PatientID" placeholder="Patient ID" />
        <input type="text" asp-for="patientModel.FirstName" placeholder="First Name" />
        <input type="text" asp-for="patientModel.SecondName" placeholder="Second Name" />
        <input type="text" asp-for="patientModel.Location" placeholder="Location" />
        <select id="active" name="active" asp-for="patientModel.Sex">
            <option value="ACTIVE">MALE</option>
            <option value="INACTIVE">FEMALE</option>
            <option value="OTHER">OTHER</option>
        </select>
        <select id="active" name="active" asp-for="patientModel.Active">
            <option value="ACTIVE">ACTIVE</option>
            <option value="INACTIVE">INACTIVE</option>
        </select>

        <button type="submit">Submit</button>

    </form>
</div>
 
     public class addnewpatientModel : PageModel
    {
        [BindProperty]
        public PatientModel patientModel { get; set; }
        public void OnGet()
        {

        }
        public IActionResult OnPost()
        {
            return RedirectToPage("/index");
        }

    }
 

Ответ №1:

Попробуйте перейти по этой ссылке. Я думаю, вы найдете ответ здесь

Элемент select имеет атрибут name. Это используется в качестве ключа для любого выбранного значения (значений) при отправке формы. Вы можете получить доступ к значению, передав ключ в качестве индексатора в запрос.

 var value = Request.Form["active"];
 

Рекомендуемый подход, однако, заключается в добавлении подходящего свойства в PageModel и в том, чтобы разрешить привязке модели применять опубликованное значение к свойству:

 public class addnewpatientModel : PageModel
 {
    [BindProperty]
    public int active { get; set; }
    public void OnPost()
    {
        // posted value is assigned to the Number property automatically
    }
}
 

Ответ №2:

Измените атрибут name для тега select или просто удалите его:

 <select id="sex" name="patientModel.Sex" asp-for="patientModel.Sex">

<select id="active" name="patientModel.Active" asp-for="patientModel.Active">