#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">