What's a good way to implement Yes/No menus in Asp.Net Core?

Viewed 339

I'm working with some ASP.Net Core 3.1 code where a form has dozens of Y/N menus like this:

<div class="form-group" id="Q3_2_div">
    <label>@Questions.Q3_2*</label>
    @Html.DropDownListFor(m => m.Answers.Q3_2, new SelectList(Enum.GetValues(typeof(YesNo))),
        "Select One",
         new { @class = "custom-select", @id = "Answers_Q3_2" })
</div>

Some of the Y/N menus look like this:

<label>@Questions.Q140*</label>
@Html.DropDownListFor(m => m.Answers.Q140,
    new SelectList(Enum.GetValues(typeof(YesNo)).OfType<Enum>().Select(x => new SelectListItem
        { Text = Enum.GetName(typeof(YesNo), x), Value = Enum.GetName(typeof(YesNo), x) }), 
        "Value", "Text", YesNo.No),
    null, 
    new { @class = "custom-select", @id = "Answers_Q140" })  

"Yes/No" is defined elsewhere:

public enum YesNo
{
    [Display(Name = "Yes")] Yes,
    [Display(Name = "No")] No
}

Q: Is there a simpler, less verbose syntax I can use instead? For example, could tag helpers help?

Thank you in advance for any suggestions!

1 Answers

Tag helpers are how I would do it.

My version would probably look something like this:

<select asp-for="Answers.Q140">
     <option value="Yes">Yes</option>
     <option value="No">No</option>
</select> 

Clean, simple, effective.

Related