私のコード:
@model ColumnVM
@{
ViewBag.Title = "AddColumn3";
Layout = "../Shared/_layout2.cshtml";
}
<script type="text/javascript">
$(function () {
$("form").validate().settings.submitHandler = function (form) {
alert('valid form');
form.submit();
};
});
</script>
@using (Html.BeginForm("addcolumn3", "Course", FormMethod.Post))
{
<fieldset>
<legend>ColumnVM</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
_Layout2.cshtml で
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Layout.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
</head>
<body>
@RenderBody()
</body>
</html>
ブラウザに次のエラーが表示されます: Uncaught TypeError: Object [object Object] has no method 'validate'. Layout=null を変更し、コードに手動で追加すると、
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
動作します!理由はわかりません。知っている人はいますか?