2

編集で宣言された DateTime プロパティがあり、次のようなビュー モデルを作成します。

[DataType(DataType.Date)]
[Display(Name = "Start")]
public DateTime DateTimeStart { get; set; }

ビューモデル全体のエディターEditorForModelをレンダリングするために使用しますが、編集するレコードを取得すると、ビューモデルのプロパティは正しい値を取得します。DisplayTextForドロップダウンすると、今日の日付が表示されます。意図した日付の値が表示されないのはなぜですか?

4

3 に答える 3

1

この問題を解決するには、モデル プロパティに追加のデータ アノテーションを設定する必要がありました。

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

私はあなたと同じ問題を経験していました。ユーザーの入力フィールドには、引き続き mm/dd/yyyy 形式が表示されます。これは、組み込みの HTML EditorFor ヘルパーを使用して割り当てられたデータをフォーマットするだけです。

于 2013-11-12T14:48:18.853 に答える
0

ブラウザ次第です。現在のところ、HTML5 日付入力タイプの日付ピッカーを提供しているのは Opera だけです。

于 2013-03-30T13:35:35.833 に答える
0

DisplayTemplates と EditorTemplates を使用して、特定のタイプのプロパティを表示する方法を定義できます。

Views > Shared フォルダーで、DisplayTemplates と呼ばれるフォルダーと EditorTemplates と呼ばれる別のフォルダーを作成し、表示するさまざまな種類のプロパティごとにカスタム テンプレートをこれらに追加できます。テンプレートはパーシャルと同様に機能します。

DateTime の DisplayTemplate 用に 1 つ持っています

@model DateTime
@if (Model.Value.Year == 1) {
    @Html.TextBox("", "") 
} else {
@Html.TextBox("", (Model.Value.ToString("dd/MM/yyyy"))) 
}
<span class="help-text">dd/mm/yyyy</span>   

TimeSpan の EditorTemplate は次のとおりです。

@model TimeSpan

@Html.DropDownList("", Enumerable.Range(0, 30)
    .Select(i => new SelectListItem { Value = i.ToString(), 
    Text = i.ToString(), Selected = Model.Days == i })) days  

@Html.DropDownList("", Enumerable.Range(0, 24)
    .Select(i => new SelectListItem { Value = i.ToString(), 
    Text = i.ToString(), Selected = Model.Hours == i })) hours : 

@Html.DropDownList("", Enumerable.Range(0, 60)
    .Select(i => new SelectListItem { Value = i.ToString(), 
    Text = i.ToString(), Selected = Model.Minutes == i })) minutes : 

@Html.DropDownList("", Enumerable.Range(0, 60)
    .Select(i => new SelectListItem { Value = i.ToString(), 
    Text = i.ToString(), Selected = Model.Seconds == i })) seconds

EditorForModel を希望どおりに動作させるために多くの時間を費やすことができることに注意してください。

HTML ヘルパーを使用してカスタム HTML を各プロパティにラップするようになりました。これは、説明したカスタム テンプレートと一緒にうまく機能しますが、柔軟性も大幅に向上します。カスタム HTML ラッパーのインスピレーションとして、このページを使用しました。ASP.NET MVC 3 カスタム HTML ヘルパー - ベスト プラクティス/使用法承認された回答ではなく、賛成票が最も多い回答を参照してください。

于 2012-11-28T12:34:57.073 に答える