ビューモデルに次のようなプロパティがあります。
[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
[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
お役に立てれば。
モデルで動作しない場合は、ビューで試してみてください。
@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})
日付のみを取得する時間を除外するため:モデル:-
[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; }
タイプに日付として注釈を付ける必要があります
[DataType(DataType.Date)]
私のためのこの仕事:
モデル内:
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>