2017-10-07 5 views
1

私は私のモデルに日時フォーマットをC#からデータベースに正しく渡すには?

[Required] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd HH:mm:ss}")] 
    public DateTime Deadline { get; set; } 

日時の変数を持っているし、ビューで日付と時間を選択して、データベースに保存するbootstrap3のDateTimePickerを使用するようにしてください。

コントローラは enter image description here

ある今、すべてが、それはデータベースに私はビューで選んだ日付ではありません保存した日付を除いて正常に動作します。

たとえば、私はビューで10/09/2017 1:58 AMを選択しています。ご覧のとおり、月は10月、日は9日です。私が提出した後

Datetimepicker screenshot

はしかし、私は、データベースに入った値は、2017年9月10日1時58分00秒です。現在の日付と比較するためにこの値を使用しようとしたとき、私はこれを見つけました Debugger screenshot

月が9になった日が10

になったスクリプトが

<script type="text/javascript"> 
$(function() { 
    $('#Deadline').datetimepicker({ minDate: moment(), format: format: 'yyyy-mm-dd hh:ii:ss' }); 
}); 
</script> 

のように見える私は時間を費やしたが、まだこの問題の背後で何が起こっているかを知ることができません。アドバイスや提案があれば、事前に助けてくれてありがとう。

+0

テキストとピッカービューが一致しません。再度あなたの質問をお読みください。文化もここでも重要ですが、それは不明です。 –

+0

日付はどのようにデータベースに渡されますか?これは本当に関連する部分なので。 –

+0

実際、データベース関連のコードは一切表示していません。ブラウザからサーバーに日付を取得するのではなく、その部分に問題があると思いますか? –

答えて

0

最後に、私はまだ値をビューからデータベースに渡すときに何が起こるのかまだ分かりません。

は、しかし、私は私が期限フィールドに使用されるHTMLヘルパーは、 EditorFor()であることがわかったん、それはタイプ 日時にこのフィールドをレンダリング。だから私はデータの注釈やjavascriptで指定した形式に関係なく、常にそのテキストボックスにMM/dd/yyyy hh:mm AM(/ PM)を表示し、その値をデータベースに誤って保存します。

ここで@type = "text"をEditorFor()に追加して、タイプテキストとしてレンダリングします。または、EditorFor()の代わりにTextBoxFor()を使用します。

それは今のようになります。

@Html.EditorFor(model => model.Deadline, new { htmlAttributes = new { @type = "text", @class = "form-control"} }) 

は、今では私はそれが何を期待しません。

関連する問題