2011-01-06 32 views
7

que tengo en mi modelo de este campojQuery de fecha y hora MVC3 selector

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

en mi opinión

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

y creo 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> 

cuando intento de crear nuevas artículo Tengo este mensaje de error

El elemento de modelo pasado en el diccionario es nulo, pero este diccionario requiere un modelo elemento no nulo de tipo 'System.DateTime'

Trato

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

Pero i no tener en la verificación del valor del modelo

Respuesta

6

Pruebe una de las siguientes:

  • Si la acción es para crear un nuevo objeto, pase una nueva instancia como modelo, p. return View(new MyObject())
  • Cambio @inherits System.Web.Mvc.WebViewPage<System.DateTime> a @inherits System.Web.Mvc.WebViewPage<System.DateTime?>
2
@inherits System.Web.Mvc.WebViewPage<System.DateTime> 

debe ser

@inherits System.Web.Mvc.WebViewPage<System.DateTime?> 
1

sólo hay que poner? en su System.DateTime

ejemplo:

@model System.DateTime? 

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

si ommit el signo de interrogación que se ge un error

0

Este es el código de mi editor de plantillas: El punto es evitar valores nulos:

@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> 
Cuestiones relacionadas