web-dev-qa-db-ja.com

入力type = dateでHtml.TextBoxForを使用するには?

コードに実装したい。そのために、私は以下を持っています:

@Html.TextBoxFor(model => model.CreationDate, new { @type = "date" })

このコードは次のHTMLを生成します。

<input data-val="true" data-val-date="The field CreationDate must be a date." 
             data-val-required="The CreationDate field is required." 
             id="CreationDate" name="CreationDate" type="date" 
             value="09/05/2012 15:02:19">

Type = "date"はYYYY-MM-DD形式のデータを想定しているため、この値はWebページに表示されません。

日付のフォーマットを試みましたが、もちろん爆発します。

@Html.TextBoxFor(model => model.CreationDate.ToString("YYYY-MM-DD"), 
                 new { @type = "date" })

TextBoxForメソッドを使用して、コンストラクトを適切に表示するにはどうすればよいですか?または、他の方法を使用する必要があります(すでにEditorForを試しましたが失敗しました)?

CreationDateはDateTime型です。

19
AngryHacker

これを試して;

@Html.TextBoxFor(model => model.CreationDate,
           new { @type = "date", @Value = Model.CreationDate.ToString("yyyy-MM-dd") })

値を設定するときは、nullを処理する必要があります。

OR

Modelを変更できる場合は、これを試すことができます。

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

そしてあなたのビューではEditorForヘルパーを使用できます。

@Html.EditorFor(model => model.CreationDate, new { @type = "date" })
53
Saranga

モデル設計:

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

デザインを見る:

<%: Html.EditorFor(m => m.CreationDate, new { @type = "date" }) %>
4
Wesley Kai Tian

EditorForとbootstrap-datepickerライブラリで似たようなことをしました:

    <div class="input-prepend date" id="startDate" [email protected] data-date-format="m/d/yyyy">
        <span class="add-on"><i class="icon-calendar"></i></span>
        @Html.EditorFor(m => m.StartDate)            
    </div>
0
Bruno