頁面端呼叫範例
private void Page_Load(object sender, EventArgs e)
{
strMsg = "";
// 取得限制配置
object obj = XMLSize.XmlRestrict.Restrict(
"webPath", // AppSettings 金鑰
"Notice_Login_txtContent", // 頁面控件 ID
XMLRestrict.res // 輸出結構
);
XMLRestrict.res = (strRestric)obj;
// 套用至控件
this.lblTxt.Text = XMLRestrict.res.msgPage;
this.txtContent.MaxLength = XMLRestrict.res.size;
this.strMsg = XMLRestrict.res.msgPrompt;
}
XML 配置檔結構
Notice_Login_txtContent
結構對應關係
| XML 節點 | 對應屬性 | 用途 |
| PageId | 頁面控件 ID | 唯一識別,對應 Control.ID |
| Control/@value | 最大長度 | 整數,設定 MaxLength |
| Message | 頁面顯示訊息 | 給使用者看的提示文字 |
| Name | 保留欄位 | 擴展用途 |
改進建議
- 快取機制:XML 解析結果應快取,避免每次請求重複載入
- 強型別配置類別:使用
XmlSerializer 反序列化為 POCO,替代手動 XmlDocument 導航
- 支援多種驗證規則:擴展
Control 節點加入 type="number|email|regex" 屬性
- 錯誤處理:目前
catch { } 吞沒異常,建議記錄日誌並回傳預設值
- 路徑解析:使用
Server.MapPath 而非 AppSettings 串聯路徑
現代化替代方案
DataAnnotations + ModelValidator(MVC/Web API)
FluentValidation 程式碼優先驗證
- 前端
maxlength + 後端再次驗證(雙重保障)