jQuery Datetime picker MVC3

Refresh

November 2018

Views

10.5k time

7

I have in my Model this field

[DataType(DataType.DateTime)]
    [Required(ErrorMessage = "Expire is required")]
    public DateTime Expire
    {
      get;
      set;
    }

In My View

@Html.EditorFor(model => model.Expire))
      @Html.ValidationMessageFor(model => model.Expire)

and I create DataTime EditorTemplates

@inherits System.Web.Mvc.WebViewPage<System.DateTime>
@Html.TextBox("", (Model.ToShortDateString()), new { @class = "datePicker" })
<script type='text/javascript'>
  $(document).ready(function () {
    $(".datePicker").datepicker({
      //      buttonImage: "/content/images/calendar.gif",
      //      showOn: "both",
      //      defaultDate: $("#calendar-inline").attr('rel')
      showAnim: 'slideDown',
      dateFormat: 'dd/mm/yyyy'

    });
  });
</script>

when i try to Create new Item I have this error message

The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'System.DateTime'

I try

Model.HasValue ? Model.Value.ToString("MM/dd/yyyy") : DateTime.Today.ToShortDateString()

But i not have in Model Value check

4 answers

1

Просто поставить? в вашем System.DateTime

пример :

@model System.DateTime?

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue,
                new
                {
                    data_datepicker = true
                })

если вы ommit знак вопроса вы будете GE об ошибке

Ram
2
@inherits System.Web.Mvc.WebViewPage<System.DateTime> 

должно быть

@inherits System.Web.Mvc.WebViewPage<System.DateTime?>
B Z
0

Это код моего шаблона редактора: Дело в том, чтобы избежать нулевых значений:

@model DateTime?


<script src="../../../Scripts/jquery-1.4.4.js" type="text/javascript"></script>
<script src="../../../Scripts/jquery-ui.js" type="text/javascript"></script>

           @Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : String.Empty), new { @class = "datePicker" })
<script type='text/javascript'>
    $(document).ready(function () {
        $(".datePicker").datepicker({
            //      buttonImage: "/content/images/calendar.gif",
            //      showOn: "both",
            //      defaultDate: $("#calendar-inline").attr('rel')
            showAnim: 'slideDown',
            dateFormat: 'dd/mm/yyyy'

        });
    });
</script>
6

Попробуйте выполнить одно из следующих действий:

  • Если действие для создания нового объекта передать новый экземпляр в качестве модели, например, return View(new MyObject())
  • Изменение @inherits System.Web.Mvc.WebViewPage<System.DateTime>в@inherits System.Web.Mvc.WebViewPage<System.DateTime?>