MVC .Net Coreでモデル検証を使用しようとしていますが、このデフォルトエラーメッセージ「値 ''は無効です」を置き換えることができません。
理論的には、モデルでErrorMessage
注釈を使用して、独自のカスタムエラーメッセージを置き換えることができます。しかし、私はこれを機能させる方法を見つけることができませんでした。
私のモデル
[Required(ErrorMessage = "Date Required")]
[DataType(DataType.Date, ErrorMessage = "Invalid Date Format")]
[Display(Name = "Appointment Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime AppointmentDate { get; set; }
上記のように、ErrorMessage
タグとRequired
タグの両方に異なるDataType
を配置します。
私のhtmlビュー
<div class="col-md-2">
<input class="form-control" asp-for="AppointmentDate">
<span asp-validation-for="AppointmentDate" class="text-danger"></span>
</div>
このエラーメッセージを置き換える方法を教えてください。ありがとう。
Required
属性を機能させるには、フィールドをnull可能にする必要があります。
public DateTime? AppointmentDate { get; set; }
編集:DataType
属性は実際にフィールドの検証を実行しないことにも注意してください。 post
データからmodel
にバインディングを適用するときのMVC検証日付
私の特定の問題は、モデルからのカスタムメッセージの代わりに同様のメッセージを表示する選択オプションの検証に関係していました。検証済みプロパティをNULL可能にすることに関する答えに加えて、DOM要素の実際の値を再確認してください。私の問題は、null許容値と空の文字列をintであると想定されるデフォルトオプションの値として追加することで解決しました。
<select asp-for="@Model.Thing" asp-items="Model.Things"
<option value="" selected>Please select a Thing</option>
</select>
<span asp-validation-for="@Model.Thing" class="text-danger"></span>
私の問題は、作成アクションで、エンティティを更新せずにビューを返すことでした。それを変更すると、Return View(new MyEntity());
が問題を修正しました