データベースに送信するフォームをロードするモーダル ポップアップ ダイアログ ボックスがあります。すべてのフィールドが入力されている場合、フォームは正常に機能します。フィールドを空白のままにして [作成] ボタンをクリックすると、検証が開始されますが、開始されません。次のエラーが表示されます: 1 つ以上のエンティティの検証に失敗しました。詳細については、「EntityValidationErrors」プロパティを参照してください。今、私はエラーが何であるかを知っています。フィールドの値は null であり、データベースに送信するために null にすることはできません。また、ModelState も false です。これは私のモデルです:
using System.ComponentModel.DataAnnotations;
using MVC_CSAlerts.Models;
namespace MVC_CSAlerts.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
public partial class csAlert
{
public int AlertID { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Must Enter a Route")]
public string Routes { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Must Enter an Issue")]
public string Issue { get; set; }
public string Detour { get; set; }
[DisplayName("Date")]
[DataType(DataType.DateTime)]
[Required]
public Nullable<System.DateTime> DateEntered { get; set; }
[Required]
[DisplayName("Entered By")]
public string EnteredBy { get; set; }
public Nullable<int> Count { get; set; }
[DisplayName("Send Email")]
public string SendEmail { get; set; }
[DisplayName("Is this a child alert")]
public string IsChildAlert { get; set; }
}
}
これが私の見解です
@model MVC_CSAlerts.Models.csAlert
@{
ViewBag.Title = "Create";
}
<h2>Create New Alert</h2>
<script type="text/javascript">
$(document).ready(function () {
// We will test DataPicker
$('#DateEntered').datepicker();
// We will test tabs
$(function () {
$(document).tooltip();
});
});
</script>
@using (Ajax.BeginForm("Create","Alerts",new AjaxOptions()))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>New Alert</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Routes)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Routes)
@Html.ValidationMessageFor(model => model.Routes)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Issue)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Issue)
@Html.ValidationMessageFor(model => model.Issue)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Detour)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Detour)
@Html.ValidationMessageFor(model => model.Detour)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DateEntered)
@Html.ValidationMessageFor(Model => Model.DateEntered)
</div>
<div class="editor-field">
@Html.JQueryUI().DatepickerFor(model => model.DateEntered)
@Html.ValidationMessageFor(model => model.DateEntered)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Count)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Count)
@Html.ValidationMessageFor(model => model.Count)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.SendEmail)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.SendEmail, new
SelectList(new List<object>{
new{ value = "Y", text="Yes"},
new{ value = "N",text="No"}
},
"value",
"text",
"Y"))
@* @Html.EditorFor(model => model.SendEmail)*@
@Html.ValidationMessageFor(model => model.SendEmail)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.IsChildAlert)
</div> <div class="editor-field> @Html.DropDownListFor(model =>
model.IsChildAlert, new SelectList(new List<object>{
new{ value = "Y", text="Yes"},
new{ value = "N",text="No"}
},
"value",
"text",
"Y"))
@* @Html.EditorFor(model => model.IsChildAlert)*@
@Html.ValidationMessageFor(model => model.IsChildAlert)
</div>
<p>
<input type="submit" value="Create New Alert" />
</p>
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
クライアント側の検証をロードするにはどうすればよいですか? モーダル ウィンドウで JavaScript の検証を行う必要がありますか?
ありがとう