2017-11-28 8 views
1

おそらく非常に明白な奇妙な問題です。私のビューモデルでは、コントローラに設定されている日付があります。私は、ビュー内のテキストボックスをレンダリングすると、それは空です。"date"タイプを追加すると、日付が空になります。

ビューモデル:

[DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}")] 
    public DateTime DateStart { get; set; } 

コントローラ:ビューの

//GET: InvoicePrice 
    public ActionResult Index(InvoicePriceViewModel model) 
    { 
     model.DateStart = DateTime.Now; 
     return View(model); 
    } 

HTML:

<p> 
     Date:<br /> 
      @Html.TextBoxFor(model => model.DateStart, new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
    </p> 

私はこれを開くと、私はここに空のテキストボックスを取得:

enter image description here

そして、私は現在の日付として "28-11-2017"を見込んでいます。

私はここで何かが分かりにくいと思う。しかし、それは何ですか?

@foreach (var item in Model) 
{ 
    <p> 
     Date:<br /> 
      @Html.TextBoxFor(modelItem => item.DateStart, new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
    </p> 
} 

答えて

2

あり、ここでの問題のカップルが実際にあると私はそれらを説明してみましょう:

+0

ヘイマン!絶対に意味がある。しかし、私は両方のアプローチを試していて、どちらもうまくいきませ私はそれが以前にはうまくいかなかった理由を理解していますが、現在フォーマットを変更した後、なぜそれでも何も表示されないのは本当に理解できません。私たちが逃した可能性のあるものは何でも? –

+0

@LarsHoldgaard、これはうまくいくはずです。私はそれを試しました。ページのソースコードを調べて、値が 'value =" 2017-11-28 "'で表示されるか、 'type =" date "'を削除するかをチェックすることができます。 – Zabavsky

0

はこのような何かを試してみてください。

最初の問題はdate inputのみyyyy-mm-dd形式で値を受け取り、ブラウザのローカライゼーション設定に基づいて、それらを表示することです:注意すべき

ことの一つは、表示された日付形式が実際の値と異なっていることである - 表示日付の形式はユーザーのブラウザの設定されたロケールに基づいて選択されますが、日付の値は常にyyyy-mm-ddの形式になります。

これは、あなたのDataFormatStringを変更する必要があるともtrueにApplyFormatInEditModeを設定する意味:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 

ために、カスタムフォーマットをに入れなければのためので、それはまだ何の効果もありません。しかし、あなたがHtml.EditorForを使用する必要があるアカウント:

@Html.EditorFor(model => model.DateStart, 
    new { htmlAttributes = new { @class = "form-control", placeholder = "Invoice date" } }) 

それともDisplayFormatAttributeを無視して、フォーマットを指定することができますHtml.TextBoxFor

@Html.TextBoxFor(model => model.DateStart, "{0:yyyy-MM-dd}", 
    new { @class = "form-control", placeholder = "Invoice date", type = "date" }) 
関連する問題