使用 select 选项在 asp.net razor 页面中获取价值

using select options to get value in asp.net razor page

我想创建一个 select 选项来输入几个固定值之一,并让它 return 与变量的匹配值类似于输入文本字段的方式,我该怎么做这个?这是我的尝试,<input type="text"> 工作正常但 select 类型 return 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");
        }

    }

试试这个 link。我想你会找到答案 here

select 元素有一个名称属性。这用作提交表单时任何 selected 值的键。您可以通过将键作为索引器传递给请求来访问该值。

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
    }
}

更改 select 标签的名称属性或将其删除:

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

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