MVC 4 の上記のパッケージに問題があります。ボタンを押してデータを投稿した後でも検証が起動しません。起動するのは、データを送信しようとした後にのみ Required および Email 属性を含む DataAnnotationsExtensions 名前空間からのものだけです。
以下は、MVC 3 で正常に動作する LogOnModel に使用したコードです。
public class LogOnModel
{
[Required(ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "Required")]
[StringLength(50, ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "MinLength6")]
[Display(Name = "Username", ResourceType = typeof(YeagerTechResources.Resources))]
public string UserName { get; set; }
[Required(ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "Required")]
[DataType(DataType.EmailAddress)]
[Email(ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "Email")]
public string Email { get; set; }
[Required(ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "Required")]
[StringLength(50, ErrorMessageResourceType = typeof(YeagerTechResources.Resources), ErrorMessageResourceName = "MinLength6")]
[DataType(DataType.Password)]
[Display(Name = "Password4", ResourceType = typeof(YeagerTechResources.Resources))]
public string Password { get; set; }
[Display(Name = "AcctRemember", ResourceType = typeof(YeagerTechResources.Resources))]
public bool RememberMe { get; set; }
}
これは著者のサイトです: http://weblogs.asp.net/srkirkland/archive/2011/02/23/introducing-data-annotations-extensions.aspx およびそれらを使用している別の人への彼の返信 (2012 年 8 月 10 日付け) ) 「.NET 4.0 と 4.5 の両方を使用して、現在の NuGet パッケージが MVC4 で正常に動作することをテストしました。」
以下は、マスターページでのスクリプトのセットアップです。
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.2.710/kendo.common.min.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.2.710/kendo.dataviz.min.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/kendo/2012.2.710/kendo.blueopal.min.css")" rel="stylesheet" type="text/css" />
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/modernizr-2.5.3.js"></script>
<script src="~/Scripts/kendo/2012.2.710/kendo.web.min.js"></script>
<script src="~/Scripts/kendo/2012.2.710/kendo.aspnetmvc.min.js"></script>
<script src="@Url.Content("~/Scripts/kendo/2012.2.710/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/kendo/2012.2.710/kendo.all.min.js")"></script>
<script type="text/javascript">
$(document).ready(function ()
{
$("#editor-field").css("border", "2px solid #f00");
var strErrCode = '@TempData["ErrCode"]';
switch (strErrCode)
{
case 'CustView':
alert('@(Resources.CustViewErr)');
break;
case 'CustErr':
alert('@(ViewBag.Error)');
break;
default:
{
if (strErrCode != "")
alert(strErrCode);
}
break;
}
});
</script>
<script>
function error_handler(e)
{
if (e.errors)
{
var message = "Errors:\n";
$.each(e.errors, function (key, value)
{
if ('errors' in value)
{
$.each(value.errors, function ()
{
message += this + "\n";
});
}
});
alert(message);
}
}
</script>
</head>
どんな助けでも大歓迎です....私はここで死んでいて、他に向きを変える場所がありません....