ASP.NET Zero--11.一個例子(4)商品分類管理-數據檢驗


雖然已經可以添加商品分類,但還需進行優化,比如:用戶是否輸入、輸入字符串是否有格式限制等等。
打開添加分類按鈕,名稱不輸入任何字符,直接保存,會發現列表添加一條空記錄。在實際項目中,這是不允許出現的事情,我必須對分類名稱進行必填限制,但用戶沒填寫時,給予提示信息。
數據驗證就涉及客戶端和服務端,建議兩端都實現,保存安全性。
 

客戶端驗證

首先,來實現客戶端驗證

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
            });
}

 

5.測試

生成項目,刷新頁面,點擊添加分類按鈕,輸入一個已存在的分類,如下提示:
 
現在添加分類功能算是完全完成了。下一篇分類編輯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM