在Razor中为ASP.NET Core设置条件属性

时间:2016-12-20 15:40:08

标签: c# asp.net asp.net-mvc razor asp.net-core

我尝试了this accepted answer,但似乎在最新版本的ASP.NET Core中可能会有不同的处理方式。我从中得不到selected属性:

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

作为替代方案,我尝试了这个并获得了selected="selected",但Visual Studio向我发出@selected is not a valid value of attribute of 'selected'的警告。

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

我可以使用它,但我必须忽略警告,它不能完全呈现我想要的东西。有没有办法得到:

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

2 个答案:

答案 0 :(得分:1)

我认为我不会在此枚举StatusOptions。我可能会把它作为我的模型的属性。

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

这应该做你想要的。

答案 1 :(得分:0)

尝试此操作并确保GET ../picture/<id>/image?<processing params>与[{1}}中的<img>类型相同

Model.Status