【问题标题】:Setting Conditional Attributes in Razor for ASP.NET Core在 Razor for ASP.NET Core 中设置条件属性
【发布时间】:2016-12-20 15:40:07
【问题描述】:

我尝试了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>

【问题讨论】:

  • 您没有设置selected 属性。 Tag Helper 会根据您绑定到的属性的值来执行此操作。 - &lt;select asp-for="Status" asp-items="Html.GetEnumSelectList&lt;StatusOptions&gt;()"&gt;&lt;/select&gt;

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


【解决方案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" })

这应该做你想做的。

【讨论】:

  • 有没有办法向该助手添加一个空的第一个选项,还是需要将其注入StatusOptions 列表?
  • 是...您可以为空选项添加所需的字符串:stackoverflow.com/a/9294117/788509
【解决方案2】:

试试这个并确保Model.Statusforeach 中的option 类型相同

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-10
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多