雖然已經可以添加商品分類,但還需進行優化,比如:用戶是否輸入、輸入字元串是否有格式限制等等。 打開添加分類按鈕,名稱不輸入任何字元,直接保存,會發現列表添加一條空記錄。在實際項目中,這是不允許出現的事情,我必須對分類名稱進行必填限制,但用戶沒填寫時,給予提示信息。 數據驗證就涉及客戶端和服務端,建議 ...
雖然已經可以添加商品分類,但還需進行優化,比如:用戶是否輸入、輸入字元串是否有格式限制等等。 打開添加分類按鈕,名稱不輸入任何字元,直接保存,會發現列表添加一條空記錄。在實際項目中,這是不允許出現的事情,我必須對分類名稱進行必填限制,但用戶沒填寫時,給予提示信息。 數據驗證就涉及客戶端和服務端,建議兩端都實現,保存安全性。
客戶端驗證
首先,來實現客戶端驗證1.打開視圖_CreateModal.cshtml
【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\_CreateModal.cshtml】 在input中修改如下代碼:<input class="form-control" type="text" name="Name" required>
2.打開_CreateModal.js
【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\_CreateModal.js】 在this.save中添加如下代碼:this.save = function () { //驗證不通過返回 if (!_$categoryForm.valid()) { return; }
3.測試
保存文件,現在點擊添加分類按鈕,不輸入任何字元,效果如下: 滑鼠點擊Input框服務端驗證
現在客戶端已經實現了必填驗證,雖然不影響使用,但不排序一些人不按套路出牌,他們可以繞過客戶端驗證,直接提交表單,這裡不多解釋。總之服務端驗證也必須完善,接下來實現服務端驗證。1.加註解
服務端驗證實現也比較簡單,打開CreateCategoryInput.cs【..\MyCompanyName.AbpZeroTemplate.Application\CategoryApp\Dto\CreateCategoryInput.cs】 添加如下代碼:[Required] public string Name { get; set; }
2.取消客戶端驗證
為了驗證服務端是否生效,這裡把客戶端驗證取消,打開文件_CreateModal.js【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Views\Category\_CreateModal.js】 修改this.save,把表單驗證代碼備註掉//if (!_$categoryForm.valid()) { // return; //}
3.驗證
生成項目,刷新頁面,再點擊添加分類按鈕,直接點保存,如下圖: 這樣服務端驗證已經生效,至此已經實現添加分類的數據驗證功能。然而功能還沒完成,接下來實現分類名稱唯一性,就是說分類名稱不可重覆。4.打開文件
CategoryAppService.cs【..\MyCompanyName.AbpZeroTemplate.Application\CategoryApp\CategoryAppService.cs】 修改CreateCategory方法為如下:public void CreateCategory(CreateCategoryInput input) { int count=_categoryRepository.Count(a => a.Name.Equals(input.Name)); if (count > 0) { throw new UserFriendlyException("分類名稱已存在!"); } _categoryRepository.Insert(new Category() { Name = input.Name }); }