2011-01-06 20 views
7

私は私のビューjQueryの日時ピッカーMVC3

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

では私のモデルでは、このフィールド

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

を持っていると私は新しいアイテムを作成しようとしたとき、私は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> 

作成このエラーメッセージがあります

辞書に渡されるモデル項目がnullであるが、これ 辞書はタイプのnull以外のモデル アイテムが必要です「のSystem.DateTime」

私は

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

を試してみてくださいしかし、私モデル値のチェックではありません

答えて

6

  • 新しいオブジェクトを作成するアクションがモデルとして新しいインスタンスを渡す場合(例: @inherits System.Web.Mvc.WebViewPage<System.DateTime?>
2
@inherits System.Web.Mvc.WebViewPage<System.DateTime> 

からreturn View(new MyObject())

  • 変更@inherits System.Web.Mvc.WebViewPage<System.DateTime>

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

    ただ置くべきか?あなたのSystem.DateTimeで

    例:

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

    あなたはこれが私のエディタテンプレートのコードです

    0

    エラーGEます疑問符OMMIT場合:ポイントはNULL値を避けるためです。

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