申込フォームによくある、”個人情報保護方針に同意する” などのチェックボックスのValidationのかけ方を紹介します。
まずModel,View,Controllerには下記のように書きます。
Model
[crayon]
[Range(typeof(bool), "true", "true")]
public bool PrivacyPolicyAgreement { get; set; }
[/crayon]
View
[crayon]
@Html.ValidationMessageFor(x => Model.PrivacyPolicyAgreement, "エラー字のメッセージ""))
[/crayon]
Controller
[crayon]
using System;
using System.Web.Mvc;
using System.Collections.Generic;
namespace MvcRequiredCheckbox
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(SampleViewModel viewModel)
{
if(!ModelState.IsValid)
{
return View(viewModel);
}
return Content("Success");
}
}
}
[/crayon]
もうひと手間必要です
上記のようにMVCを書けば動きそうに見えますが、実はもう一工夫必要です。このままだと、サーバ側のValidationはちゃんとうごくのですが、クライアント側のValidationがなぜか逆になります。(チェックを付けるとエラー、外すとOK という動き)
そこで下記のようなScriptをViewに入れてあげます。
[crayon]
[/crayon]
これで正常な動きをします。