2010年10月24日 星期日

ASP.NET Dynamic Data - How to customize error message with template

本篇在說明如何使用Dynamic Data 專案預設範本後,如何客製化Error Message。

首先我們建立一個Dynamic Data專案,如下圖:

我們打開專案瀏覽,其目錄層次如下圖,然後我們以Northwind資料庫為例,建立一個名為Northwind的實體資料模型。

這樣就完成了,目前還沒修改到任何程式,然後我們Compile本專案,下圖為Compile後的第一頁,其中如Products,Customers等等就是我們在Northwind的實體資料模型中,所選擇要連結的資料表。

我們選擇Edit這筆資料。

Default Error Message


我們在UnitPrice這個欄位輸入A,因為這個欄位型態應該為數值,故目前輸入的A是字串,所以系統會顯示預設的欄位驗證後的Error Message「欄位UnitPrice必須是有效的十進位數」,如下圖:

如何Customize Error Message


接下來我們要客製化上面所提到的Error Message(Cuctomize Error Message),我們先建立一個Partial Products Class,然後在這裡面寫入我們針對每個欄位要驗證的項目,以及驗證錯誤後,我們客製的錯誤訊息,如下範例程式碼所示:


   1:  using System;
   2:  using System.ComponentModel.DataAnnotations;
   3:  using System.Web.DynamicData;
   4:   
   5:  namespace WebAppDynamicData.Models
   6:  {
   7:      [MetadataType(typeof(ProductsMetadata))]
   8:      public partial class Products
   9:      {
  10:          public class ProductsMetadata
  11:          {
  12:              [StringLength(8, ErrorMessage = "ProductName超過欄位長度")]
  13:              public object ProductName;
  14:   
  15:              [Required(ErrorMessage = "UnitPrice欄位不可為空白")]
  16:              [Range(100, 2000, 
  17:                  ErrorMessage = "100<=UnitPrice允許值<=2000")]
  18:              public object UnitPrice;
  19:   
  20:              [RegularExpression(@"^\d+$", 
  21:                  ErrorMessage = "UnitsInStock欄位只可為數字")]
  22:              [DataType(DataType.Currency, ErrorMessage = "TypeError")]
  23:              public object UnitsInStock;
  24:          }
  25:      }
  26:  }

Display Customize Error Message


寫完上面的驗證項目與客製化的錯誤訊息後,我們來測試一下是否可出現我們剛才設定的客製化的錯誤訊息。我們將UnitPrice這個欄位先清為空白後,按下下方的Update,進行修改後儲存的動作,我們可看到我們剛才客製化的錯誤訊息「UnitPrice欄位不可為空白」。

我們再接著策是UnitPrice欄位值是否符合在一定的數值範圍內,我們在UnitPrice欄位輸入2001後按下Update,進行修改後儲存的動作,我們可看到我們剛才客製化的錯誤訊息「100<=UnitPrice允許值<=2000」。



以上我們示範了如何使用Dynamic Data 專案預設範本後,還能客製化我們想要顯示的錯誤訊息。

沒有留言:

張貼留言