-1

私のコード:

@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>

動作します!理由はわかりません。知っている人はいますか?

4

1 に答える 1

0

レイアウト ページの完全な仮想パスを指定してみてください。

@model ColumnVM
@{
    ViewBag.Title = "AddColumn3";
    Layout = "~/Views/Shared/_layout2.cshtml";
}

@Tats_innit が言ったように、パス解決エラーである可能性があります。MVC は最終的に修飾されていないビュー/レイアウトの共有フォルダーを検索するため、レイアウトの名前が一意の場合はそのまま使用することもできます。

于 2013-04-21T01:59:43.460 に答える