2016-06-16 14 views
2

データベースにNULL可能なdatetime列があります。私は、このプロパティは、次のように定義している私のviewmodelでC#Nullable DateTime書式設定エラー - 暗黙的に型 'string'を 'System.DateTime'に変換できません。

は次のとおりです。

viewModel.ExpiryDate = topic.ExpiryDate.HasValue ? 
      topic.ExpiryDate.Value.ToString("DD MMM YYYY") : null; 

をしかし、私は」:私のコントローラの編集方法で

public DateTime? ExpiryDate { get; set; } 

は、私は次のように、このプロパティの値を設定しようとしていますエラーが発生しました:

Cannot implicitly convert type 'string' to 'System.DateTime?' 

すべてのエラー:あなたがのDateTime型のプロパティに文字列を渡している、このコード.ToString("DD MMM YYYY")

viewModel.ExpiryDate = topic.ExpiryDate.HasValue ? 
      topic.ExpiryDate.Value : null; 

public DateTime ExpiryDate { get; set; } 

viewModel.ExpiryDate = topic.ExpiryDate.ToString("DD MMM YYYY") 
+1

'viewModel.ExpiryDate'は' DateTime? 'ですが、文字列を割り当てようとしています。それは明確ではない? 'DateTime'にはフォーマットがありません。ToString(" DD MMM YYYY ")'でここで何を達成しようとしていますか? –

+0

ExpiryDateは、Convert.ToDateTime(文字列形式)またはDateTime.ParseExact(文字列形式)として割り当てる必要があります。 –

+0

ExpiryDateは、データベーステーブルのnull可能なDateTime値です。私の見解では、テキストボックスフィールド内にその表示をフォーマットしたいと思う。それは私がviewmodelを割り当てるときにそれをフォーマットしようとしている理由です。 – adam78

答えて

3

は、これを行います。ヌル値を割り当てようとしているので、viewModel.ExpiryDatenullable DateTimeタイプであることを確認してください。

+0

なぜ直接 'viewModel.ExpiryDate = topic.ExpiryDate'でないのですか? – fubo

+0

どちらのタイプが正しいのかわからないが、あなたは正しいfuboだ。 : –

+0

'Convert.ToDateTime(String.Format(" {0:dd MMM yyyy} "、topic.ExpiryDate.Value)'またはDateTime.ParseExact(topic.ExpiryDate.Value、 "dd MMM yyyy"、CultureInfo.InvariantCulture ) 'が可能です。OPに特定の日付形式が必要な場合、つまりtopic.ExpiryDateが文字列でDateTimeではない場合に可能です。 –

関連する問題