asp.net核心单选按钮帮助器为每个单选按钮呈现的ID始终相同

Eli*_*eth 5 asp.net-core-mvc asp.net-core

Create.cshtml //为简洁起见删除了Rest表单代码

<div class="form-group">
<label for="GradingKey.HalfScoresCount">
    <input asp-for="GradingKey.HalfScoresCount" value="true" type="radio" />Yes
</label>
<span asp-validation-for="GradingKey.HalfScoresCount" class="text-danger" />
</div>

<div class="form-group">
<label for="GradingKey.HalfScoresCount">
    <input asp-for="GradingKey.HalfScoresCount" value="false" type="radio" />No
</label>
<span asp-validation-for="GradingKey.HalfScoresCount" class="text-danger" />
</div>
Run Code Online (Sandbox Code Playgroud)

创建了Html

<div class="form-group">
<label for="GradingKey.HalfScoresCount">
    <input value="true" type="radio" data-val="true" data-val-required="Das Feld &quot;HalfScoresCount&quot; ist erforderlich." id="GradingKey_HalfScoresCount" name="GradingKey.HalfScoresCount" />Yes
</label>
<span class="text-danger field-validation-valid" data-valmsg-for="GradingKey.HalfScoresCount" data-valmsg-replace="true" />
</div>

<div class="form-group">
<label for="GradingKey.HalfScoresCount">
    <input value="false" type="radio" id="GradingKey_HalfScoresCount" name="GradingKey.HalfScoresCount" />No
</label>
<span class="text-danger field-validation-valid" data-valmsg-for="GradingKey.HalfScoresCount" data-valmsg-replace="true" />
</div>
Run Code Online (Sandbox Code Playgroud)

为什么生成的html与两个单选按钮的ID相同?

我怎么能避免这种情况?

Wil*_*Ray 11

为什么生成的html与两个单选按钮的ID相同?

默认情况下,idan 的字段input将是asp-for标记帮助器值中设置的属性的名称.您有两次列出的相同值:

<input asp-for="GradingKey.HalfScoresCount" value="true" type="radio" />Yes
<input asp-for="GradingKey.HalfScoresCount" value="false" type="radio" />No
Run Code Online (Sandbox Code Playgroud)

我怎么能避免这种情况?

只需指定您自己的id属性值:

<input asp-for="GradingKey.HalfScoresCount" value="true" type="radio" id="myFirstId" />Yes
<input asp-for="GradingKey.HalfScoresCount" value="false" type="radio" id="mySecondId" />No
Run Code Online (Sandbox Code Playgroud)

只要您不修改name属性,模型绑定仍将正常运行.

  • 请注意,在`&lt;input type =“ radio” /&gt;`上指定显式的`id =“”`属性可能会破坏`&lt;label for =“”&gt;`元素,例如-或使用`@ Html.IdFor( m =&gt; ..)`。 (2认同)