私は現在、ASP.NET MVCでWebプロジェクトを開発中です。私はそれにページを作成し、それはSQL Serverを介してデータベーステーブルに対応するエンティティを作成します。必要なタグだけではなく、カスタムバリデーションクラスを使用することを選択しました。私は完全に動作する私の他のカスタムバリデーションクラスとまったく同じようにクラスをコーディングしましたが、何らかの理由でこのクラスは私が何を試みてもページを送信しても発砲しません。カスタムクラスの検証が機能していませんか?
のViewModel:
public class MyViewModel {
//my other properties
[ValidateCreateDate(ErrorMessage = "Date must be after or on today's date.")]
public DateTime? RequestedDate { get; set; }
}
クラス:
public class ValidateCreateDateAttribute : RequiredAttribute
{
private context db = new context();
public override bool IsValid(object value) //breakpoint is never hit here
{
//code to check if it is valid or not
}
}
ビュー:
@model context.MyViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Create", "Data", FormMethod.Post))
{
<div class="row">
<div class="col-md-2">
@Html.EditorFor(model => model.RequestedDate)
</div>
<div class="col-md-2">
@Html.ValidationMessageFor(model => model.RequestedDate)
</div>
<div class="col-md-8">
<button type="submit">Submit</button>
</div>
</div>
}
<script type="text/javascript">
$(function() {
$("#RequestedDate").datepicker();
});
</script>
ClientValidationEnabledとUnobtrusiveJavaScriptEnabledを、js-を含みます邪魔にならないようにファイル? – Mackan
はい、両方とも有効になっていて、実際のコードに邪魔にならないファイルを添付しました。ありがとうございます@Mackan –
@EliHellmerフォームが正しく送信されていますか?それは "作成"アクションメソッドに当たっていますか?あなたのコードはうまく見えますが – Shyju