虽然已经可以添加商品分类,但还需进行优化,比如:用户是否输入、输入字符串是否有格式限制等等。
打开添加分类按钮,名称不输入任何字符,直接保存,会发现列表添加一条空记录。在实际项目中,这是不允许出现的事情,我必须对分类名称进行必填限制,但用户没填写时,给予提示信息。
数据验证就涉及客户端和服务端,建议两端都实现,保存安全性。
 

客户端验证

首先,来实现客户端验证

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 > )
{
throw new UserFriendlyException("分类名称已存在!");
}
_categoryRepository.Insert(new Category()
{
Name = input.Name
});
}

5.测试

生成项目,刷新页面,点击添加分类按钮,输入一个已存在的分类,如下提示:
 
现在添加分类功能算是完全完成了。下一篇分类编辑

ASP.NET Zero--11.一个例子(4)商品分类管理-数据检验的更多相关文章

  1. [asp.net core]SignalR一个例子

    摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...

  2. ASP.NET Zero--8.一个例子(1)菜单添加

    以一个商品分类管理功能来编写,代码尽量简单易懂.从一个实体开始,一直到权限控制,由浅到深一步步对功能进行完善. 1.打开语言文件 [..\MyCompanyName.AbpZeroTemplate.C ...

  3. 这算是ASP.NET MVC的一个大BUG吗?

    这是昨天一个同事遇到的问题,我觉得这是一个蛮大的问题,而且不像是ASP.NET MVC的设计者有意为之,换言之,这可能是ASP.NET MVC的一个Bug(不过也有可能是保持原始请求数据而作的妥协). ...

  4. Erlang 程序引发共享内存 bug 的一个例子

    虽然 Erlang 的广告说得非常好,functional.share-nothing.消息传递,blah blah 的,好像用 Erlang 写并发程序就高枕无忧了,但是由于 Erlang 信奉高度 ...

  5. 一步步学习ASP.NET MVC3 (11)——@Ajax,JavaScriptResult(2)

    请注明转载地址:http://www.cnblogs.com/arhat 今天在补一章吧,由于明天的事可能比较多,老魏可能顾不上了,所以今天就再加把劲在写一章吧.否则对不起大家了,大家看的比较快,可是 ...

  6. 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作

    原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...

  7. Webpack入门——使用Webpack打包Angular项目的一个例子

    2016.1.22,对大多数人来说,这是一个非常平常的日子,但这却是我决定在博客园写博客的日子.虽然注册博客园的博客已有4年8个月,却一直没有动手写过一篇博客,原因是觉得自己水平不行,写不出好东西,所 ...

  8. [ASP.NET MVC2 系列] ASP.Net MVC教程之《在15分钟内用ASP.Net MVC创建一个电影数据库应用程序》

    [ASP.NET MVC2 系列]      [ASP.NET MVC2 系列] ASP.Net MVC教程之<在15分钟内用ASP.Net MVC创建一个电影数据库应用程序>       ...

  9. 《The art of software testing》的一个例子

    这几天一直在看一本书,<The art of software testing>,里面有一个例子挺有感触地,写出来和大家分享一下: [问题] 从输入对话框中读取三个整数值,这三个整数值代表 ...

随机推荐

  1. 必须掌握的JavaScript基本知识

    作为一个前端工作者,应该了解一些javascript的发展历史,javascript实现及版本等.基本概念包括语法.关键字.变量.数据类型.操作符.语句控制及函数等,它们和我们学习的其它语言C/C++ ...

  2. vs 中一些快捷键

    本文用于记录一些vs中快捷键,以便提高编程效率. 首先小坦克的博客介绍的十几个快捷键挺不错的,还有动画演示.可以跳过去看看. 自己也记录一些自己想用的吧: 1. ctr + W + E 出现error ...

  3. 我的Android 4 学习系列之开始入手:配置开发环境与理解Hello World!

    目录 如何安装Android SDK.创建开发环境和调试项目 移动设计中一些注意事项 使用Android虚拟设备.模拟器和其他开发工具 如何安装Android SDK.创建开发环境和调试项目 下载和安 ...

  4. hrift 的序列化机制

    Thrift 个人实战--Thrift 的序列化机制 前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码 ...

  5. 运行jar包

    windos下,打开dos命令cmd然后cd 你的路径(比如E:/新建文件夹) linux下,打开终端cd 到你的路径( 然后输入java -jar 要运行的jar.jar

  6. 如何在ubuntu 12.04下搭建Python Django环境

    1. 检查python是否安装:直接在shell里输入python,如果已经安装了python,即可进入python bash,并看到版本号(如Python 2.7.3) ——在ubuntu中pyth ...

  7. web代理进行跨域访问

    通过web代理进行跨域访问,http请求返回超时的问题定位   [现象] 在ajax通过web代理跨域访问时,http第一次登陆时正常,但是第二次再下发其他命令的时候总是返回 java.net.Soc ...

  8. c# 即使服务又是可执行程序的代码实现

    先看下代码 namespace UpdaterServer { class Program { static void Main(string[] args) { ) { ServiceBase[] ...

  9. NuGet安装及简单使用

    通过Visual Studio安装NuGet 直接下载并安装NuGet 一.通过Visual Studio安装NuGet 打开Visual Studio扩展管理器 2.选择联机库,并在搜索中写入NuG ...

  10. NoSQL发展简史、粗略分类及选择

    这里对近来看的部分NoSQL资料做一个汇总记录,主要包括简史.粗略分类及数据库选择的考虑事项.NoSQL常见的解释是“non-relational”,有时也称作Not Only SQL.     1. ...