使用 jQuery datepicker 和 Create 视图无法正常工作
Posted
技术标签:
【中文标题】使用 jQuery datepicker 和 Create 视图无法正常工作【英文标题】:Use jQuery datepicker and the Create view not worked correctly 【发布时间】:2012-01-22 23:26:49 【问题描述】:我使用带有 Razor View 的 ASP.NET MVC3 并尝试使用 Scott Allen's way 来替换 DateTime 类型的 datepicker。 所以我有一个像这样的简单模型:
public class Student
public long Id get; set;
[Required]
public string Name get; set;
[DataType(DataType.DateTime)]
public DateTime EnterYear get; set;
在进行任何更改之前,所有视图都正常工作,但是当我添加一些代码以使用 datapicker 时,我遇到了一个问题:编辑视图正常工作,但是当我尝试转到创建视图时出现错误:
The model item passed into the dictionary is null, but this dictionary requires a non-
null model item of type 'System.DateTime'.
Description: An unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the error and where
it originated in the code.
Exception Details: System.InvalidOperationException: The model item passed into the
dictionary is null, but this dictionary requires a non-null model item of type
'System.DateTime'.
Source Error:
Line 59: </div>
Line 60: <div class="editor-field">
Line 61: @html.EditorFor(model => model.EnterYear)
Line 62: @Html.ValidationMessageFor(model => model.EnterYear)
Line 63: </div>
Source File: d:\Projects\MyProject\Views\Student\Create.cshtml Line: 61
这是我的改动:
1- 将 EditorTemplates 文件夹添加到视图中的共享文件夹。
2- 将日期时间部分视图添加到上述文件夹:
@model System.DateTime
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue
, new data_datepicker = true )
3- 将新脚本添加到 _Layout 视图:
/// <reference path="../Scripts/jquery-1.5.1-vsdoc.js" />
/// <reference path="../Scripts/jquery-ui-1.8.11.js" />
$(document).ready(function ()
$(":input[data-datepicker]").datepicker();
)
4- 并将所需的脚本和 css 引用添加到 _Layout:
<link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="stylesheet"
type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript">
</script>
使用此实现,编辑视图与数据选择器正常工作,但板条箱视图运行错误,创建视图会发生什么情况?问题出在哪里?
【问题讨论】:
【参考方案1】:@model System.DateTime
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue
, new data_datepicker = true )
应该是
@model System.DateTime?
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue
, new data_datepicker = true )
允许空文本框值
【讨论】:
以上是关于使用 jQuery datepicker 和 Create 视图无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章