ASP.NET MVC 検証処理
検証結果判定(Controller)
public ActionResult Create(FormCollection collection)
{
TEST.Models.MyDBEntities myDb = new TEST.Models.MyDBEntities();
//modelの新規作成
TEST.Models.MyTable1 model = new TEST.Models.MyTable1();
return View(model);
}
[HttpPost]
public ActionResult Create(TEST.Models.MyTable1 model)
{
//検証結果を判定
if (ModelState.IsValid)
{
TEST.Models.MyDBEntities myDB = new TEST.Models.MyDBEntities();
//myDB.AddToMyTable1(myTable1: model);
myDB.AddObject(entitySetName: “MyTable1”, entity: model);
myDB.SaveChanges();
RedirectToAction(“Create”);
}
return View(model);
}
検証ルール(Model)
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;
入力エラー時に表示されるコントロール名
[DisplayName(“Field1”)]
例:Field1は必須です。
未入力検証
[Required(ErrorMessage = “{0}は必須です。”)]
例:(DisplayName)は必須です。
[EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
[DataMemberAttribute()]
[RegularExpression(“[0-9]”, ErrorMessage = “{0}は数値を入力してください。”)]
public int Field1 { get; set;}
検証結果の表示(View)
jQueryライブラリ参照
<script src=”@Url.Content(“~/Scripts/jquery.validate.min.js”)” type=”text/javascript”></script>
<script src=”@Url.Content(“~/Scripts/jquery.validate.unobtrusive.min.js”)” type=”text/javascript”></script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(excludePropertyErrors:true)
excludePropertyErrors:true ⇒ 入力エラー内容をまとめて表示させない
(Html.ValidationMessage等による個別のエラー表示が必要)
excludePropertyErrors:false ⇒ 入力エラー内容がまとめて表示される
(Html.ValidationMessage等による個別のエラー表示が不要。またはメッセージを「*」等に)
<div>
<div>
@Html.EditorFor(model => model.Field1)<br />
@Html.ValidationMessageFor(model => model.Field1)<br />
//excludePropertyErrors:false時の設定(エラーメッセージを「*」に)
@Html.ValidationMessageFor(model => model.Field1, validationMessage:”*”)<br />
</div>
<div>
@Html.EditorFor(model => model.Field2)<br />
@Html.ValidationMessageFor(model => model.Field2)<br />
</div>
<div>
@Html.EditorFor(model => model.Field3)<br />
@Html.ValidationMessageFor(model => model.Field3)<br />
</div>
<input type=”submit” value=”Create” /><br />
</div>
}
検証結果の装飾(CSS)
Content/Site.cssに記載する。
/* Styles for validation helpers
———————————————————–*/
.field-validation-error
{
color: #ff0000;
}
.field-validation-valid
{
display: none;
}
.input-validation-error
{
border: 1px solid #ff0000;
background-color: #ffeeee;
}
.validation-summary-errors
{
font-weight: bold;
color: #ff0000;
}
.validation-summary-valid
{
display: none;
}