3

Html.EditorFor の日付ピッカーを表示しようとしています

これを行うために、Views\Shared\EditorTemplate フォルダーに EditorTemplate を作成し、DateTime.cshtml という名前を付けました。

しかし、それは機能していません。代わりにエラーが発生しています---Microsoft JScript runtime error: Object doesn't support property or method 'datepicker'

このエラーを修正するのを手伝ってください

これは私のカミソリビューページです

@model MyWebRole.ViewModels.ViewModelEvents
@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset style="width:50%">
        <legend>Event Details:</legend>
        <div>
            <table>

                <tr>
                 <td>

                        @Html.EditorFor(model => model.vmStartDate)
                        @Html.ValidationMessageFor(model => model.vmStartDate)
                    </td>


                </tr>
            </table>
        </div>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
}

ここに私のDateTime.cshtmlがあります(下に貼り付けました)

@model System.DateTime?

<div class="editor-field">
    @Html.TextBox("", String.Format("{0:MM/dd/yyyy}",(Model == DateTime.MinValue)? null : Model), new { @class="text"})
</div>

<script type="text/javascript">
    $(document).ready(function () {
        $("#@ViewData.ModelMetadata.PropertyName").datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'mm/dd/yy',
            gotoCurrent: true
        });
    });
</script>

日付ピッカーを別のビューで動作させることができます

  @model MyWebRole.Models.Events
    @{
        ViewBag.Title = "Edit";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <fieldset style="width:50%">
            <legend>Event Details:</legend>
            <div>
                <table>

                    <tr>
                     <td>

                            @Html.EditorFor(model => model.StartDate)
                            @Html.ValidationMessageFor(model => model.StartDate)
                        </td>


                    </tr>
                </table>
            </div>
            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    }

2 つのカミソリ ビューの違いは、-> 最初のもの ((datepicker が機能していない) は ViewModel をモデルとして使用していることです (mywebrole.ViewModels.EventViewModel)

--> 2 つ目は myWebrole.models.Events を使用しています (datepicker は正常に動作しています)

これは問題ですか?

4

1 に答える 1

0

そのエラーを考えると、問題はセレクターだと思います。$("#@ViewData.ModelMetadata.PropertyName")の代わりに、これを試してください:

$("input.text").datepicker({   ...

(または、 @Html.TextBoxの代わりに@ Html.TextBoxFor(model => model)を使用することもできます。これにより、入力id=PropertyNameを取得し、セレクターが機能するはずです)。

また、datepicker JQuery プラグインのスクリプトがページに正常に読み込まれたことは確かですよね?

于 2012-05-06T04:38:07.450 に答える