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;
}