最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。

十年河东十年河西,莫欺少年穷

学无止境,精益求精

   最近在做自学MVC,遇到的问题很多,索性一点点总结下。

MVC4数据验证:

本例以程序为例就行说明:

public class MyModel{[Required(ErrorMessage = "请输入收件人姓名")]public string Uname { get; set; }[Required(ErrorMessage = "请输入收货人手机号")][RegularExpression(@"^1[3458][0-9]{9}$", ErrorMessage = "手机号格式不正确")]public string UMoblie { get; set; }[Required(ErrorMessage = "请选择所属省份")]public string cmbProvince { get; set; }[Required(ErrorMessage = "请选择所属市/县")]public string cmbCity { get; set; }[Required(ErrorMessage = "请选择所属区域")]public string cmbArea { get; set; }public int moren { get; set; }public string postnum { get; set; }[Required(ErrorMessage = "请填写详细地址")]public string AddressInfo { get; set; }[RegularExpression(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", ErrorMessage = "请输入正确的电子邮箱地址")]public string Email { get; set; }[StringLength(18, ErrorMessage = "身份证格式不正确!")]public string cardNum { get; set; }//中国身份证号 18位
[StringLength(16, MinimumLength = 6, ErrorMessage = "密码长度应在6~18位之间")][System.ComponentModel.DataAnnotations.Compare("ConfimPassWords")]//二次输入密码必须和上次相同public string NewPassWords { get; set; }//密码长度 6~16位
[DataType(DataType.Password)][StringLength(16, MinimumLength = 6, ErrorMessage = "密码长度应在6~18位之间")][System.ComponentModel.DataAnnotations.Compare("NewPassWords")]//二次输入密码必须和上次相同public string ConfimPassWords { get; set; }//密码长度 6~16位
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]public decimal money { get; set; }// DisplayFormat特性可以用来处理属性的各种格式化选项。当属性包含空值时,可以提供可选的显示文本,也可以为包含标记的属性关闭HTML编码,还可以为运行时指定一个应用于属性值的格式化字符串。
[ReadOnly(true)]public decimal Price { get; set; }//表示只读的 不可修改
[Range(18, 60)]public int Age { get; set; }//年龄范围// order 控制字段属性的顺序
        [Required][StringLength(160)][Display(Name = "Last Name", Order = 15001)]public string LastName { get; set; }[Required][StringLength(160, MinimumLength = 3)][Display(Name = "First Name", Order = 15000)]public string FirstName { get; set; }}

MVC特性,本篇主要讲解:Exclude、Include、Remote、HandleError、HiddenInput

表单提交中,如果我们不想提交某些属性,我们可以使用Exclude特性来声明

表单提交中,如果我们仅仅只提交某些属性,我们可以使用Include特性来声明

例如我们有如下Model

[Bind(Exclude="Address")]//在类上边进行声明,则针对所有引用该类的Action方法有效public class Employee{public string Name { get; set; }public string Email { get; set; }public string Address { get; set; }public string PhoneNo { get; set; }}

提交表单时,我们不提交Address,那么在Action方法中,我们获取不到Address的值,如下所示:

当然,如果我们不是针对所有方法,而是仅仅针对一个方法,那么我们可以将特性写在方法上,如下所示:

除了上述:[Bind(Exclude="Address")]进行声明,我们也可以使用Include进行声明:

 [Bind(Include = "Name,Email,PhoneNo")]//在类上边进行声明,则针对所有引用该类的Action方法有效public class Employee{public string Name { get; set; }public string Email { get; set; }public string Address { get; set; }public string PhoneNo { get; set; }}

 Remote特性讲解

假设我们有一个注册表单,里面有邮箱文本框,当输入邮箱后,我们想检查输入的邮箱是否在数据库中已经存在,如果存在,则不提交表单,这时我们可以使用RemoteAttribute,通过RemoteAttribute,我们可以在不用提交表单就可以先进行一些服务端验证。

我们可以在下面的例子中使用RemoteAttribute:

[Required]
[Remote("CheckUserName", "Home")]
public string UserName
{
get;
set;
}

RemoteAttribute的第一个参数是一个Action名字,第二个是Controller名字,第三个是如果邮箱已存在后显示给用户看的提示信息。当我们输入完邮箱后,CheckEmail方法将被执行并检查邮箱是否存在。

public JsonResult CheckUserName(string UserName){bool result = true;if (UserName == "admin"){result = false;}return Json(result,JsonRequestBehavior.AllowGet);}

HandleError讲解如下:

我们已经有很多方法在MVC中处理异常,比如用try catch,或者使用Filter,或者通过第三方库比如elmah。但是MVC也提供了一个HandleErrorAttribute去处理异常,如下:

[HandleError()]
public ActionResult CheckError(){int a = 10;int b = 0;int k = a / b;return View();}

在web.config文件中,我们添加如下两行:

<customErrors mode ="On" defaultRedirect ="Error.cshtml">
</customErrors>

在shared文件夹下创建一个视图Error.cshtml,然后运行程序,如果运行上面的CheckError()方法,你刚创建的Error.cshtml将会显示出来。

我们也可以使用HandleErrorAttribute给不同类型的异常显示不同的视图页面。

[HandleError(ExceptionType=typeof(DivideByZeroException),View="DivideByZeroErrorView")]
[HandleError(ExceptionType = typeof(NullReferenceException), View = "NullRefrenceErrorView")]
public ActionResult CheckError(){int a = 10;int b = 0;int k = a / b;return View();}

HiddenInput Attribute

如果我们想对用户隐藏一些实体字段,我们可以使用HiddenInput特性。

public class Employee{[HiddenInput(DisplayValue=false)]public string Name { get; set; }[Remote("CheckEmail","Employee",ErrorMessage="Email is already exist")]public string Email { get; set; }public string Address { get; set; }public string PhoneNo { get; set; }}

在以上的实体中,我用HiddenInput特性去描述Name字段。这样程序运行后在浏览器中Name字段将不在显示。因此HiddenInput给我们d 在实体字段上多了一些额外的控制。

C# 自动属性:

在 C# 3.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁。

下面示例演示了属性的标准实现和自动实现:

class Program {class Person {//标准实现的属性int _age;public int Age {get { return _age; }set {if (value < 0 || value > 130) {Console.WriteLine("设置的年龄有误!");return;}_age = value;}}//自动实现的属性public string Name { get; set; }}static void Main(string[] args) {Person p = new Person();p.Age = 180;p.Name = "小王";Console.WriteLine("{0}今年{1}岁。",p.Name,p.Age);Console.ReadKey();}
}

上面的自动属性是控制年龄的范围,很简单!

再如我写的自动截取字符串长度的属性

 /// <summary>/// 积分榜/// </summary>public partial class YX_weiUserJF{private string nickName;public string NickName{get { return nickName; }set{nickName = value;if (CommonMethod.GetStringLenth(nickName) > 16){//当昵称长度大于16位时,进行截取前两位+ ... +后两位nickName = nickName.Substring(0, 2) + "..." + nickName.Substring(nickName.Length - 2, 2);}}}private int score;public int  Score{get { return score; }set{score = value;}}}

好了,就这么多,很简单吧!

参考:MVC常用特性使用

@陈卧龙的博客

MVC4 数据验证、特性、自动属性总结相关推荐

  1. 计算机函数公式的使用VLOOKUP,EXCEL函数公式大全使用VLOOKUP函数IF函数数据验证来自动获取价格...

    EXCEL函数公式大全使用VLOOKUP函数,IF函数和数据验证来通过下拉框自动获得产品价格. Excel函数和公式在工作中经常使用. 是否直接使用公式决定了我们的工作效率. 今天,我们将学习VLOO ...

  2. Silverlight实例教程 - Validation数据验证基础属性和事件

    上篇介绍了Silverlight的Validation数据验证的好处和概述,其中了解到Silverlight数据验证方法可以被抽象为语法验证和语义验证,其中前者是通过数据类型定义对比验证,而后者是通过 ...

  3. 合理使用EntityFramework数据验证的异常错误提示信息

    EntityFramework本身提供了非常方便的数据验证特性,以支持用户交互过程中输入项错误时的友好提示.其实业务逻辑层的开发同样离不开这个特性.就拿登录之个典型场景来说,首先定义出用户实体模型,假 ...

  4. Silverlight实例教程 - Validation用户提交数据验证捕获

    在以往的Validation系列中,介绍了四种Silverlight验证机制: 基本异常验证机制: DataAnnotation验证机制: IDataErrorInfo客户端同步验证机制: INoti ...

  5. 【ASP.NET MVC4】第八课:MVC数据验证、验证特性、自定义验证

    知识点:MVC数据验证概述.验证特性的使用.自定义验证.扩充基于 Entity Framework 的数据模型. 1.MVC 数据验证概述 1.1  为什么要进行数据验证 ASP.NET MVC 中的 ...

  6. mvc4 利用filters特性来 实现自己的权限验证 之二

    刚开始摸索C# MVC,也只是按图索骥,对C#的特性不是很懂,耐心看完相关文章,对特性的使用有了进一步理解. 1.特性类的命名规范:特性也是一个类,必须继承于System.Attribute类,命名规 ...

  7. Dapper数据库字段(列)与实体属性名不一致,通过Column特性自动注入映射

    一.前言 Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.Dapper只有一个代码文件,完全开源,你可以放在项 ...

  8. vue一二级联动清空二级数据_【周一实用技巧】二级联动还不够,自动更新才最牛。Excel 2013利用数据验证条件制作一级、二级联动和自动更新下拉列表...

    Excel 2013实用技巧教程系列 第-9.4-节  下拉列表 下拉列表作为提高数据录入效率和防止错误数据的有效方法,在日常工作中应用非常普遍.除了一级.二级联动列表,小编excel小课堂(ID:e ...

  9. 把数据自动填入exe的输入框_2000余字长文讲解Excel中的“数据验证”,我收藏了...

    今天的文章主要跟大家分享Excel中数据有效性(新的Excel版本叫:数据验证)的基础用法! 一.如何设置数据有效性? 步骤:选中需要设置数据有效性的单元格或者单元格区域,点击菜单栏的"数据 ...

最新文章

  1. 7年增长16倍,清华AI+ML课程学生数暴增 | AI Index 2018
  2. 服务器市场严酷竞争下的众生相
  3. StatQuest-对RNA-seq的介绍
  4. 使用datatable 将测试数据与业务分离
  5. 拖动改变Table的列宽度
  6. 你应该如何正确健壮后端服务?
  7. Windows Sockets错误标识及对应解释
  8. 【网址收藏】Docker中ADD和COPY的区别
  9. checkbox选中和不选中 jqu_jquery checkbox 选中不选中
  10. DLL 远程线程注入
  11. 探索比特币源码1-运行 Bitcoin Core Node
  12. 计算机视觉基础:图像处理 Task 04:图像滤波
  13. c语言上机作业题及答案,华为C语言上机试题及答案
  14. 使用Fresco加载gif动画
  15. 《白帽子讲web安全》第1章 我的安全世界观
  16. 《PWM整流器及其控制》读书笔记-第二章-PWM整流器拓扑结构及原理
  17. 【C语言开源库】C语言必备实用第三方库Melon(包括数据结构算法)
  18. 年轻代、年老代和持久代
  19. 为什么有些年轻人大学毕业后那么坦然的在家待业?
  20. 艺赛旗(RPA)如何导入 py 文件到流程中

热门文章

  1. 也写Jquery插件,拖动布局
  2. iOS UIDatePicker设置为中文的方法
  3. SQL2008--SQL语句-存储过程-触发器-事务处理-基本语法-函数
  4. 开发大型高负载类网站应用的几个要点
  5. TRACERT命令及用法
  6. 计算机基础思维导图_超级简单的实操示范,教你零基础带孩子玩转风靡全球的思维导图...
  7. python输出输入的字符串_python笔记3-输出输入、字符串格式化
  8. miui12怎么自定义开机动画_MIUI12相机特色功能须知,新增魔法分身与相机上滑启动更多模式...
  9. mysql 性能剖析_MySQL服务器性能剖析(一)
  10. linux上apache目录在哪,Linux下Apache目录明细