web-dev-qa-db-ja.com

DisplayFormat DataFormatStringが機能しないのはなぜですか?

ビューモデルに次のようなプロパティがあります。

[Editable(false)]
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }

まだマークアップ

<td>
    @Html.DisplayFor(modelItem => item.MovementDate)
</td>

日付値を2013/05/15 12:00:00 AMとしてレンダリングします。

私は何を間違えていますか?私のモデル:

public class WithDateModel
{
    [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
    public DateTime TheDate { get; set; }
    public WithDateModel()
    {
        TheDate = DateTime.Now;
    }
}

私の見解:

@model ParkPay.WebTests.Models.WithDateModel
@Html.DisplayFor(m => m.TheDate)
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

レンダリングされるもの:

2013/05/25 02:23:37 AM
26
ProfK

[Editable(false)]を設定しているのに、なぜApplyFormatInEditModeを使用しているのですか? ApplyFormatInEditModeが行うことは、テキストボックスまたは編集用の何かに日付がある場合、日付をフォーマットすることです。

以下を使用して、日付を正しく表示することができました。

[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
public DateTime Date 
{
    get
    {
        return DateTime.Now;
    }
    set
    {
        Date = DateTime.Now;
    }
}

そして、ビューで(結果の出力とともに):

@Html.DisplayFor(x => x.Date)        // 2013/05/23
<br />
@Model.Date                          // 23/05/2013 09:57:56
<br />
@Html.DisplayFor(x => Model.Date)    // 2013/05/23

お役に立てれば。

6
MattSull

モデルで動作しない場合は、ビューで試してみてください。

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})

38
user1616625

日付のみを取得する時間を除外するため:モデル:-

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd}"]
   public DateTime TheDate { get; set; }

ビューで:-

    @Html.DisplayFor(model=> model.TheDate)
    @Html.JQueryUI().DatepickerFor(model => model.TheDate)

次のリンクのチュートリアルが役立つ場合があります。

http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html

私の場合、チームメイトは、モデルプロパティで[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]よりも優先されることに気づかなかったグローバル表示テンプレート(別名~\Views\Shared\DisplayTemplates\DateTime.cshtml)を定義していました。

解決策は、フォーマット文字列を新しい共有テンプレートに移動することでした。そのため、属性は次のように変更されます。

// see ~\Views\Shared\DisplayTemplates\DateMyFormat.cshtml for formatting
[UIHint("DateMyFormat")]
public DateTime MovementDate { get; set; }
1
yzorg

タイプに日付として注釈を付ける必要があります

[DataType(DataType.Date)]
1
Prakash G. R.

私のためのこの仕事:

モデル内:

using System.ComponentModel.DataAnnotations;

namespace Athlete.Models
{
    public class Foo
    {

        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime SignDate
        {
           get;
           set;
        }
    }
}

ビューで:

<td style="text-align:left;">@Html.DisplayFor(modelItem => item.SignDate)</td>
0
Keith Aymar