首页 > 解决方案 > 如何在 Asp.net core mvc 视图中检查带有枚举值的单选按钮

问题描述

我已将我的视图呈现如下

<div class="row row-margin-zero">
                        <label class="radio-inline margin-rightt-ten margin-leftt-five margin-top-none">
                            <input type="radio" asp-for="@Model.Countries" name="optradio"  value="1" class="margin-rightt-five">
                            America
                        </label>
                        <label class="radio-inline margin-rightt-ten margin-leftt-five margin-top-none">
                            <input type="radio"  asp-for="@Model.Countries" name="optradio" value="2" class="margin-rightt-five">
                            Australia
                        </label>
                        <label class="radio-inline margin-rightt-ten margin-leftt-five margin-top-none">
                            <input type="radio"  asp-for="@Model.Countries" name="optradio" value="0" class="margin-rightt-five">
                            Eng
                        </label>
                    </div>

下面是我的枚举

公共枚举国家 {America,Eng,Australia}。

如何检查具有模型中指定的枚举值的单选按钮?

标签: jqueryasp.net-mvcasp.net-coreradio-button

解决方案


假设您有一个 enumCountries和一个 ViewModel,它的属性为Country

public enum Countries {America, Eng, Australia};

public class XModel{
    // ... other props

    public Countries Country{get;set;}
}

要为 Country 渲染单选按钮,您可以获取所有可能的值,System.Enum.GetValues(typeof(Countries))这样您就可以通过一个简单的循环来渲染它们。

@model XModel

@foreach( var c in System.Enum.GetValues(typeof(Countries)) )
{
    <label asp-for="Country">@c</label>
    <input type="radio" asp-for="Country" value="@((int)c)" />
}

演示:

在此处输入图像描述


[编辑]

我如何显示选定的值

只需checked动态添加一个属性:

@foreach( var c in System.Enum.GetValues(typeof(Countries)) .OfType<Countries>() )
{
    <label asp-for="Country">@c</label>
    <input type="radio" asp-for="Country" value="@((int)c)"   checked="@(c == Model?.Country)" />
}

推荐阅读