問題があります。基本的に、フォームに多くのフィールドがあり、それらすべてに必須の属性が設定されているため、空のままにして [OK] をクリックすると、クライアント側の検証が行われ、赤くなります。EditorTemplate 以外のすべてに適しています。
私のモデルは次のとおりです。
public class MyModel
{
[Required]
public string Username{get;set;}
public Location Loc{get;set;}
}
public class Location
{
[Required]
public string Loc1{get;set;}
[Required]
public string Loc2{get;set;}
}
私は私のメインビューで以下を持っています:
@Html.EditorFor(m => m.Location, Model.Location)
そして、ここに私の EditorTemplate があります:
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.Loc1)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.Loc1, Model.Locs==null?Enumerable.Empty<SelectListItem>():Model.Locs, "---select--", new { @class = "location-ddl" })
</td>
<td>
@Html.ValidationMessageFor(m => m.Loc1)
</td>
</tr>
...
徹底的に調査した後、生成する HTML が次のようになっていることに気付きました。
<select name="Location.Loc1" id="Location_Loc1">
ご覧のとおり、クライアント側の検証のためのいくつかの属性が欠けています。通常は次のようになります。
<select name="Loc1" id="Loc1" data-val-required="The Loc1field is required." data-val="true">
私の質問は、エディター テンプレートがクライアント側の検証で正しい html 出力を生成しない理由と、それを修正する方法です。
サーバー側で機能するため、サーバー側でそれらの選択が空の場合、入力されていないとマークされて返送されます。それでも、エディタフォームの動作とその修正方法を理解したいと思います。
ありがとう