C# 在ASP.NET Core的Razor中设置条件属性

C# 在ASP.NET Core的Razor中设置条件属性,c#,asp.net,asp.net-mvc,razor,asp.net-core,C#,Asp.net,Asp.net Mvc,Razor,Asp.net Core,我试过了,但在最新版本的ASP.NET Core中似乎处理方式有所不同。我没有从中选择任何属性: <select class="form-control" asp-for="Status"> <option></option> @foreach (var option in Enum.GetNames(typeof(StatusOptions))) { <option value="@option" @{if (optio

我试过了,但在最新版本的ASP.NET Core中似乎处理方式有所不同。我没有从中选择任何
属性:

<select class="form-control" asp-for="Status">
    <option></option>
    @foreach (var option in Enum.GetNames(typeof(StatusOptions))) {
        <option value="@option" @{if (option == Model.Status) { <text>selected="true"</text> } }>@option</option>
    }
</select>
我可以使用它,但我必须忽略警告,它不能完全呈现我想要的效果。有没有办法得到:

<option value="firstOption" selected>firstOption</option>
firstOption

尝试此操作并确保
型号。状态
将与
foreach中的
选项
类型相同

<select class="form-control" asp-for="Status">
        <option></option>
        @foreach (var option in Enum.GetNames(typeof(StatusOptions))) {
            <option value="@option" @{option == Model.Status ? "selected" : ""} }>@option</option>
        }
    </select>

@foreach(Enum.GetNames中的var选项(typeof(StatusOptions))){
@选择权
}

我想我不会在这里列举StatusOptions。我可能会把它作为我的模型上的一个属性

public List<SelectListItem> StatusOptions => Enum.GetNames(typeof(StatusOptions)).Select(o => new SelectListItem {
   Text = o,
   Value = o,
   Selected = o == this.Status
}).ToList();

这应该可以满足您的需要。

您不需要设置
selected
属性。标记帮助器根据绑定到的属性的值执行此操作。-<代码>
是否有办法将空的第一个选项添加到该帮助器中,或者是否需要将其插入到
状态选项列表中?是。。。可以为空选项添加所需的字符串:
public List<SelectListItem> StatusOptions => Enum.GetNames(typeof(StatusOptions)).Select(o => new SelectListItem {
   Text = o,
   Value = o,
   Selected = o == this.Status
}).ToList();
@Html.DropDownListFor(m => m.Status, Model.StatusOptions, new { @class="form-control", asp_for = "status" })