我正在尝试在我的MVC 3应用程序中实现一个jquery datepicker。它在编辑模式下工作正常,但是当尝试在创建视图中使用它时,我得到空字典异常,它告诉我它不能采用空值并需要DateTime值。当然它会为null,你试图创建一个新的领域。我怎样才能让它发挥作用。
答案 0 :(得分:1)
我会使用EditorTemplate
代替自定义助手
创建新的部分视图Date.ascx并将其放在\Views\Shared\EditorTemplates\
<%@ Control Language="C#" %>
<%: Html.TextBox("", Model == null ? "" : ((DateTime)Model).ToString("yyyy-MM-dd"), new { @class = "datepicker", @readonly = "readonly" })%>
适用于DateTime
答案 1 :(得分:0)
使用自定义助手更容易,我在我的一个应用程序中使用下面的助手。
1.创建助手类
namespace System.Web.Mvc.Html
{
public static class DatePickerHelper
{
public static string DatePicker(this HtmlHelper htmlHelper, string id, string name, string value)
{
StringBuilder sBuilder = new StringBuilder();
sBuilder.AppendLine("<script language=\"javascript\" type=\"text/javascript\">");
sBuilder.AppendLine("$(function () {");
sBuilder.AppendLine("$(\"#" + id + "\").datepicker({");
sBuilder.AppendLine("showOn: \"button\",");
sBuilder.AppendLine("buttonImage: \"/Content/images/icon-calendar.gif\",");
sBuilder.AppendLine("dateFormat: 'dd/mm/yy',");
sBuilder.AppendLine("buttonImageOnly: true");
sBuilder.AppendLine(" });");
sBuilder.AppendLine("});");
sBuilder.AppendLine("</script>");
sBuilder.AppendLine("<input type=\"text\" value=\"" + value + "\" id=\"" + id + "\" name=\""+name+"\" class=\"SmallTextBox\" />");
return sBuilder.ToString();
}
}
}
在您的视图中使用它(用于创建) 在我的情况下,我有Controller调用Employee,如果你使用数据模型{“YouControllerName.PropertyName”和“YouControllerName_PropertyName”
,请确保使用此模式&lt;%= Html.DatePicker(“Employee_StartDate”,“Employee.StartDate”,“”)%&gt;
进行编辑
&lt;%= Html.DatePicker(“Employee_StartDate”,“Employee.StartDate”,Model.Employee.StartDate.ToShortDateString())%&gt;