2017年9月4日 星期一

ASP.NET MVC DisplayTemplates

範本檔案放置的路徑是固定的

    /Views/ControllerName/DisplayTemplates
    /Views/Shared/DisplayTemplates

檔名需要與物件的型別相同,即若物件型別為 DateTime,則檔名需為 DateTime,或在
Model 上以 [UIHint("YourDisplayTemplatesName")] 標籤指定顯示範本的檔名

選定檢視範本的方式有三種,其順序為
1.UIHine 屬性
2.DataType 屬性
3.物件的資料型別名稱(不含命名空間)

蠻適合拿來處理西元轉民國年問題
在處理檢示範本頁面上需要注意會不會傳入的值是 null 的問題

實作方式

在 /Views/Shared/DisplayTemplates 中加入 twDateTime.cshtml
可能需要自行建立 DisplayTemplates 資料夾
這頁就是檢視範本,最後輸出什麼到 View 上就是看這頁最後會產出什麼

    @model DateTime
    @using  System.Globalization
    @{ 
        TaiwanCalendar tc = new TaiwanCalendar();
    }    
    @tc.GetYear(Model)/@tc.GetMonth(Model)/@tc.GetDayOfMonth(Model)    

在 Model 中加入 DTTest.cs

    public class DTTest
    {
        [UIHint("twDateTime")]
        [DataType(DataType.DateTime)]
        public DateTime Dt { get; set; }
    }

在 Controller 中加入

    public ActionResult ShowTWDt()
    {
        var DTTest = new DTTest()
        {
            Dt = DateTime.Now
        };

        return View(DTTest);
    }

在 View 中加入 ShowTWDt.cshtml
    @model ControllerPratice.Models.DTTest
    @Html.DisplayFor(model => model.Dt)

沒有留言:

張貼留言