MVC日付フォーマットの2つの方式
4865 ワード
DateTimeタイプのプロパティを含むクラスがあるとしますが、編集時にJoinTimeを所望のフォーマットで表示するにはどうすればいいですか?
HomeController:
ホームでcshtml強タイプビュー:
方式1:符号化
Views/Shared/EditorTemplatesでDateTimeを作成します.cshtml強タイプ部分ビュー、ToString()でフォーマット:
方式2:ViewData経由.TemplateInfo.FormattedModelValue
[DisplayFormat(DataFormatString="{0:yyyyy-MM-dd}"...]属性がDateTimeタイプの属性にヒットした場合、ビューページでViewDataを通過することができます.TemplateInfo.FormatedModelValueは、このタイプのプロパティフォーマットの表示を取得します.
Views/Shared/EditorTemplatesでDateTimeを作成します.cshtmlの強いタイプの部分ビューは、ViewDataを通ります.TemplateInfo.FormatedModelValueフォーマットの日付タイプのプロパティ.
using System;
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
public class Employee
{
public DateTime? JoinTime { get; set; }
}
}
HomeController:
using System;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new Employee(){JoinTime = DateTime.Now});
}
}
}
ホームでcshtml強タイプビュー:
@model MvcApplication1.Models.Employee
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
@Html.EditorFor(model => model.JoinTime)
方式1:符号化
Views/Shared/EditorTemplatesでDateTimeを作成します.cshtml強タイプ部分ビュー、ToString()でフォーマット:
@model DateTime?
@Html.TextBox("", Model.HasValue ? Model.Value.ToString("yyyy-MM-dd") : "", new {@class = "date"})
方式2:ViewData経由.TemplateInfo.FormattedModelValue
[DisplayFormat(DataFormatString="{0:yyyyy-MM-dd}"...]属性がDateTimeタイプの属性にヒットした場合、ビューページでViewDataを通過することができます.TemplateInfo.FormatedModelValueは、このタイプのプロパティフォーマットの表示を取得します.
using System;
using System.ComponentModel.DataAnnotations;
namespace MvcApplication1.Models
{
public class Employee
{
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? JoinTime { get; set; }
}
}
Views/Shared/EditorTemplatesでDateTimeを作成します.cshtmlの強いタイプの部分ビューは、ViewDataを通ります.TemplateInfo.FormatedModelValueフォーマットの日付タイプのプロパティ.
@model DateTime?
@Html.TextBox("", Model.HasValue ? @ViewData.TemplateInfo.FormattedModelValue : "", new {@class="date"})