国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

XAF應用開發教程(五)驗證模塊

2019-11-14 13:39:10
字體:
來源:轉載
供稿:網友

數據驗證是應用程序開發中使用頻率最高的功能模塊,本節詳細介紹一下XAF中如何使用驗證模塊。

XAF 驗證模塊內置了下面的一些驗證規則:

驗證規則類型

說明

RuleCombinationOfPRopertiesIsUnique (RuleCombinationOfPropertiesIsUniqueAttribute)要求多個屬性的值組合在一起時是唯一的.
RuleCriteria (RuleCriteriaAttribute)要求滿足指定的條件. 如:座機或手機必須填寫一個。 條件為:坐機 is not null or 手機 is not null
RuleFromBoolProperty (RuleFromBoolPropertyAttribute)要求指定的boolean類型的屬性的值必須為真.比如注冊用戶時必須選中同意一系列的條款。
RuleIsReferenced (RuleIsReferencedAttribute)要求必須被引用的.
RuleObjectExists (RuleObjectExistsAttribute)要求對象是必須存在的.
RuleRange (RuleRangeAttribute)要求值必須在一定的范圍內.
RuleRegularExpression (RuleRegularExpressionAttribute)要求輸入的值必須是滿足正則表達式的.
RuleRequiredField (RuleRequiredFieldAttribute)要求值是必填寫的.
RuleStringComparison (RuleStringComparisonAttribute)要求字符串必須符合某種比較的條件.
RuleValueComparison (RuleValueComparisonAttribute)要求值必須是符合某種比較條件.
RuleUniqueValue (RuleUniqueValueAttribute)要求值必須是唯一的.

 

為了更直觀的理解,我們先上一個效果圖。從必填驗證說起:

如上圖所示,在按下了保存、保存關閉、保存新建 按鈕之后,會出現一個錯誤提示信息。同時,在姓名文本框前面會出現一個紅色報錯的圖標。這個效是怎么實現的呢?

 public class 客戶........

....................
private string _姓名; [RuleRequiredField(CustomMessageTemplate ="請填寫姓名!")] public string 姓名 { get { return _姓名; } set { SetPropertyValue("姓名", ref _姓名, value); } }
...................

我在前面使用的項目中,打開了客戶.cs文件,并在客戶類的姓名屬性上增加了一行

[RuleRequiredField(CustomMessageTemplate ="請填寫姓名!")]
是的只需要這樣一行就可以了。

這樣,XAF為我們生成了一條驗證規則,規則的名稱是自動指定的,一系列相關的也都用了默認值,我們修改一下代碼,指定下名稱:

[RuleRequiredField("客戶姓名必填", DefaultContexts.Save,CustomMessageTemplate ="請填寫姓名!")]

第一個參數為規則的名稱,DefaultContexts.Save是指在保存這個上下文時才執行驗證。

編譯后,打開xafml文件,可以看到這么規則的所有信息:

按照左側紅框中的路徑,最終點擊結點“客戶姓名必填”后,右側出現了此規則的詳細信息,其中格式這一分組內的設置都是顯示消息類的。可以進行一下漢化。

帶有地球圖標的,都是需要本地化的屬性。

行為一欄中:

InvertResult:反轉結果,當設置為True時,即驗證的結果如果是沒通過,則認為通過,即是否通過的結果取反,這個選項在必填驗證是沒什么用的,我們不可能做一個驗證規則要實現某些屬性必須不能填值的。

ResultType:Error,Warning,Information三種,其中:

Error:當不滿足驗證規則時,報個錯誤出來,并且不能繼續操作程序。上面演示的驗證規則就是這樣效果了。

Warning:當不滿足驗證規則時,顯示一個警告信息,確認后,繼續程序運行。

比如:客戶信息中有個地址屬性,當然我們是希望填寫地址的,如果不填寫,有市場活動舉行時,我們有一些禮品就沒辦法寄送給客戶。此時,我們可以增加一條這樣的規則,但如果確定得不到地址,也只能不填寫了,但要提示操作人員。

按下保存時,可以看到地址文本框前面出現了一個黃色感嘆號圖標。在錯誤信息提示的位置,出現了一個checkbox,文字是Ignore warnings,當選中了checkbox后,再次按保存時,則不在提示此信息了。

下面我們再來看看將ResultType修改為Information時的效果:

代碼:

 private string _地址;        [RuleRequiredField(ResultType = ValidationResultType.Warning,CustomMessageTemplate ="如果不填寫地址,市場活動禮品將無法送達,確認不填寫嗎?")]        public string 地址{            get { return _地址; }            set { SetPropertyValue("地址", ref _地址, value); }        }

 

由于姓名沒有填寫,觸發了必填規則,同時顯示出了地址的信息,但可以不去糾正,只是顯示出信息。

當,姓名填寫了時,地址的消息是不會顯示的,此時,點擊Validation按鈕會看到提示信息:

        private string _地址;       [RuleRequiredField(ResultType = ValidationResultType.Information,CustomMessageTemplate ="如果不填寫地址,市場活動禮品將無法送達,確認不填寫嗎?")]        public string 地址{            get { return _地址; }            set { SetPropertyValue("地址", ref _地址, value); }        }

接下來看xafml中規則的 SkipNullOrEmptyValues,這個選項在必填驗證時沒有意義,但在別的規則中是有意義的,比如:地址必須以“上海市”開頭,如果沒有填寫則不驗證,那么把此值設置成True即可。

代碼:

 private string _地址;        [RuleRequiredField(ResultType = ValidationResultType.Information,CustomMessageTemplate ="如果不填寫地址,市場活動禮品將無法送達,確認不填寫嗎?")]        [RuleStringComparison("地址必須開始于上海市", DefaultContexts.Save, StringComparisonType.StartsWith,"上海市",SkipNullOrEmptyValues =true)]        public string 地址{            get { return _地址; }            set { SetPropertyValue("地址", ref _地址, value); }        }

如果沒有填寫地址時,規則并不會生效。保存是直接通過的,這就是SkipNullOrEmptyValues的作用。

TargetContextIDs:這個屬性是個字會串,可以隨意填寫。首先來看一下什么是Context,即上下文:

上下文是指讓驗證規則生效的一個環境,比如保存數據時,審核數據時,刪除數據時,入庫時,等等 ,但系統其實只提供了兩個默認的上下文環境,我們前面使用了

DefaultContexts.Save 這個枚舉,可以看他的定義(我使用的是Reflector查看的):
[Flags]public enum DefaultContexts{    Delete = 2,    Save = 1}

可以看到這個枚舉是Flags,也就是說,多個值是可以同時使用的。只定義了刪除、保存。

系統內置的上下文環境只有這兩種,當然我們可以定義自己的上下文環境,請看下一節中的自定義上下文。

 我們可以看到在xafml的規則中,有很多的屬性,其實在代碼中這些屬性都是可以控制的,在書寫Attribute時,我們可以利用VS的智能感知,查看有哪些參數可以設置,對照著XAFML中的信息,就能知道功能了。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米易县| 东阳市| 武清区| 贵州省| 祁连县| 日照市| 墨玉县| 昭平县| 海淀区| 榆社县| 轮台县| 科尔| 武邑县| 沙河市| 奎屯市| 鹿邑县| 旌德县| 西安市| 泰兴市| 嵩明县| 镇巴县| 建湖县| 宜川县| 大同市| 温泉县| 奉节县| 普格县| 大渡口区| 鸡西市| 阳泉市| 仁怀市| 勃利县| 福贡县| 黄梅县| 龙井市| 泉州市| 九寨沟县| 泾阳县| 老河口市| 磴口县| 广河县|