Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。
本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP28。
而由於開始進行新增、編輯 OrderDetail 的資料,有關於處理資料輸入時的格式驗證就不可或缺了。
而在 Re: 從零開始用 Xamarin 技術來復刻過去開發的一個 App : TopStore 的 EP 25 就有針對 PersonDetail 的部分處理過輸入資料的格式驗證;Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 的 EP 29 也有快速處理到 ProductDetail 輸入資料時的資料格式驗證。
這裡也來幫 OrderDetail 處理一下有關資料輸入時的驗證吧~~~
若是沿用過去所使用的 DataAnnotations
機制來處理的話,就找到 Models 底下的 OrderDetail 類別,來掛上相關的 Attritube 限制:
Quantity 屬性掛上如下 Attritube:
[Required(ErrorMessage = "數量為訂單明細必填資料")]
[Range(1, double.MaxValue, ErrorMessage = "必須為 1 以上個數")]
Price 屬性掛上如下 Attritube:
[Required(ErrorMessage = "價格為訂單明細必填資料")]
[Range(0, double.MaxValue, ErrorMessage = "必須為 0 元以上數值")]
完成結果如下圖:
接著簡單的調整一下 Pages 底下的 AddOrderPage 與 OrderDetailShowPage 的頁面 UI 設計,需要加上把驗證失敗時的訊息顯示用的 Label:
給 Quantity 用的 Label:
<Label x:Name="QuantityError" IsVisible="False" TextColor="Red" />
給 Price 用的 Label:
<Label x:Name="PriceError" IsVisible="False" TextColor="Red" />
OrderDetailShowPage 完成結果如下圖:
當初設計 OrderDetaiShowPage 的時候,Entry 並沒有限制 Keyboard 為數字,補充加入。
AddOrderPage 完成結果如下圖:
同樣的要繼續調整 OrderDetailShowPageViewModel 當中的 Save 方法與 AddOrderPageViewModel 當中的 Done 方法。
主要是要在 OrderDetail 的資料要透過 DataService 執行 SaveOrderDetail 方法之前,要再進行資料的輸入驗證,透過以下判斷處理:
var isValid = Utilities.ValidationHelper.IsValid(orderDetail, Shell.Current.CurrentPage);
if (!isValid)
return;
OrderDetailShowPageViewModel 完成結果如下圖:
AddOrderPageViewModel 完成結果如下圖:
執行結果看看~~~
OrderDetailShowPage 顯示驗證錯誤的結果如下圖:
AddOrderPage 顯示驗證錯誤的結果如下圖: