我正在尝试为我的Html.EditorFor
显示一个日期选择器为此,我在Views \ Shared \ EditorTemplate文件夹中创建了一个EditorTemplate,命名为DateTime.cshtml
但它不起作用,而是我收到错误--- Microsoft JScript runtime error: Object doesn't support property or method 'datepicker'
Plz帮我解决了这个错误
这是我的剃刀查看页面
@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>
我可以让datepicker在另一个视图上工作
@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>
}
两个剃刀观点之间的区别在于 - &gt;第一个((datepicker不工作)使用ViewModel作为模型,即(mywebrole.ViewModels.EventViewModel)
- &GT;第二个是使用myWebrole.models.Events(datepicker正常工作)
这是一个问题吗?
答案 0 :(得分:0)
鉴于该错误,我认为问题是选择器。试试这个,而不是 $(“#@ ViewData.ModelMetadata.PropertyName”):
$("input.text").datepicker({ ...
(或者,您可以 @ Html.TextBoxFor(model =&gt; model)而不是 @ Html.TextBox ,这样输入会得到 id = PropertyName ,因此选择器应该可以工作)。
此外,您确定 datepicker JQuery插件的脚本已在页面上成功加载,对吧?