使用模板实现jquery datepicker

时间:2011-09-04 17:46:19

标签: asp.net-mvc-3

我正在尝试在我的MVC 3应用程序中实现一个jquery datepicker。它在编辑模式下工作正常,但是当尝试在创建视图中使用它时,我得到空字典异常,它告诉我它不能采用空值并需要DateTime值。当然它会为null,你试图创建一个新的领域。我怎样才能让它发挥作用。

2 个答案:

答案 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();
            }
        }
    }
  1. 在您的视图中使用它(用于创建) 在我的情况下,我有Controller调用Employee,如果你使用数据模型{“YouControllerName.PropertyName”和“YouControllerName_PropertyName”

    ,请确保使用此模式

    &lt;%= Html.DatePicker(“Employee_StartDate”,“Employee.StartDate”,“”)%&gt;

  2. 进行编辑

    &lt;%= Html.DatePicker(“Employee_StartDate”,“Employee.StartDate”,Model.Employee.StartDate.ToShortDateString())%&gt;