私はMVC3への最初の暫定的なステップを実行していますが、モデル内のナビゲーションプロパティをビューに変換する際に問題が発生しました。ビューのナビゲーションプロパティでは、クライアント側の検証が許可されておらず、「表示」ラベル属性も取得されていないようです。
私は次の単純なモデルを持っています:
public class Entity
{
[Key,
ScaffoldColumn(false)]
public int Entity_Id { get; set; }
[Display(Name = "Entity Name"),
Required(ErrorMessage = "Please enter the entity name."),
StringLength(150, ErrorMessage = "Please ensure that the entity name is under 150 characters.")]
public string Entity_Nm { get; set; }
[Display(Name = "Entity Type"),
Required(ErrorMessage="Please select the entity type"),
ForeignKey("EntityType")]
public int EntityType_Id { get; set; }
public virtual EntityType EntityType { get; set; }
}
このモデルを参照するもの:
public class EntityType
{
[Key]
public int EntityType_Id { get; set; }
[Display(Name = "Entity Name"), Required(ErrorMessage="Please enter the entity type name.")]
public string EntityType_Nm { get; set; }
}
このモデルの読み取り/書き込みアクションとビューを使用してコントローラーを作成すると、次の作成フォームが表示されます。
<fieldset>
<legend>Entity</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Entity_Nm)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Entity_Nm)
@Html.ValidationMessageFor(model => model.Entity_Nm)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EntityType_Id, "EntityType")
</div>
<div class="editor-field">
@Html.DropDownList("EntityType_Id", String.Empty)
@Html.ValidationMessageFor(model => model.EntityType_Id)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
これは、[エンティティタイプ]ドロップダウンのラベルを除けば問題ありません。何らかの理由で、モデル内のナビゲーションプロパティの[表示]属性を取得していません(スペースが不足していることに注意してください)。また、プロパティを「必須」属性で装飾しているにもかかわらず、クライアント側の検証がドロップダウンリストに対して有効になっていません(サーバー側の検証は問題なく機能します)。クライアント側の検証は、他のフィールドで機能します。必要なすべての.jsスクリプトファイルが含まれていることに注意してください。また、関連する有効化検証キーをweb.configに追加しました。
私がここで見逃しているアイデアはありますか?みんなありがとう。