【问题标题】:MVC3 razor view error Microsoft JScript runtime error: Object doesn't support property or method 'datepicker'`MVC3 razor 视图错误 Microsoft JScript 运行时错误:对象不支持属性或方法 'datepicker'`
【发布时间】:2012-05-06 04:29:00
【问题描述】:

我正在尝试为我的 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>
    }

两种剃刀视图的区别在于 -->第一个((日期选择器不工作)使用 ViewModel 作为模型,即(mywebrole.ViewModels.EventViewModel)

--> 第二个是使用 myWebrole.models.Events (日期选择器工作正常)

这是一个问题吗?

【问题讨论】:

    标签: asp.net-mvc-3 razor datepicker


    【解决方案1】:

    鉴于该错误,我认为问题出在选择器上。而不是 $("#@ViewData.ModelMetadata.PropertyName"),试试这个:

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

    (或者,您可以 @Html.TextBoxFor(model => model) 代替 @Html.TextBox,这样 input 会得到 id=PropertyName,因此选择器应该可以工作)。

    另外,您确定 datepicker JQuery 插件的脚本已成功加载到页面上,对吧?

    【讨论】:

    • 是的,页面上成功加载了datepicker JQuery插件的脚本。
    • 我注意到如果我使用 mywebrole.models.mymodel ,日期选择器工作正常,但是当我使用 mywebrole.ViewModels.myViewModel 时会抛出错误
    • @Millar Cool ...既然您发布了其他观点,我很肯定选择器是问题所在。只需将“#@ViewData.ModelMetadata.PropertyName”更改为“input.text”,我敢打赌它会起作用。
    • 我将“#@ViewData.ModelMetadata.PropertyName”更改为“input.text”,但出现同样的错误。”Microsoft JScript 运行时错误:对象不支持属性或方法 'datepicker '"
    • @Millar smh :(。那时我真的不知道。这是另一个基本相同问题的 SO 线程,结果是脚本冲突。也许这就是问题:stackoverflow.com/questions/2714494/…
    猜你喜欢
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多