2012-01-26 3 views
1

私はEntityFramework CodeFirst MVC3を使用します。私のモデルのnull可能なプロパティが私の作成ビューに表示されました

@model PostCreateViewModel 

@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(model => model.PostToCreate.PublishDate) 
    @Html.EditorFor(model => model.PostToCreate.PublishDate) 
    ... 
} 

私は上のエラーを得た:私のビューを作成するには

public ActionResult Create() 
    { 
     PostCreateViewModel viewModel = new PostCreateViewModel 
     { 
      PostToCreate = new PostFullViewModel(), 
      Authors = m_AccountBusiness.GetAllUsers().Select(x => new SelectListItem { Text = x.UserName, Value = x.UserID.ToString() }) 
     }; 

     return View(viewModel); 
    } 

:ここ

public class PostFullViewModel 
{ 
    public int PostID { get; set; } 
    ... 
    public DateTime? PublishDate { get; set; } 
    ... 
} 

は私のアクションコントローラを作成している:私のモデルでは、私はこのようなnull入力可能プロパティを定義しエディター用:

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

どのようにして、作成ビューでPublishDateが空であることを示すことができますか?

ありがとうございました。だから、あなたは可能性

@model DateTime 
... 

+0

を作成中に何らかの問題を持っていなかった、ダーリンと思いますか?あなたはもっと詳しく説明できますか? – Ray

+0

質問を更新して、作成アクションコントローラを表示しました。 – Bronzato

答えて

2

は、私はあなたが強く、このようDateTime代わりのDateTime?に型付けされた(XXXは、あなたの現在のコントローラ名です~/Views/Shared/EditorTemplates/DateTime.cshtmlまたは~/Views/XXX/EditorTemplates/DateTime.cshtml)のDateTimeタイプのカスタムエディタのテンプレートを定義したと思いますそのタイプをDateTime?に変更してください。

+0

ありがとうございます。私はDateTimeであなたを見せてくれるように更新しましたか?エディタテンプレートのコードでは、Model.HasValueがテキストボックスに書式設定された日付を表示するか、nullの場合は空のテキストボックスを表示するかどうかをテストします。 – Bronzato

+0

@Bronzatoでは、必要なのはカスタムフォーマットを使って日付をフォーマットするだけで、カスタムエディタテンプレートは必要ありません。 '[DisplayFormat(NullDisplayText =" "、DataFormatString =" {0:dd/MM/yyyy} "、ApplyFormatInEditMode = true)]のように' [DisplayFormat] '属性で' PublishDate'プロパティを単純に飾ることができます。 public DateTime? PublishDate {get;セット; } '。 –

0

私はどちらかは、私は以下のようにPostCreateViewModelクラスを想定したときにところで、私はからPostToCreate財産であるビュー

public class PostCreateViewModel 
    { 
     public PostFullViewModel PostToCreate { get; set; } 

    } 
関連する問題