对于MVC模式的使用,现在是越来越广泛,也有很多针对MVC的框架出现。之前在使用中是用的EF自动生产model,所以对于其可以使用的特性没有过多的关注,对于特性可实现的内容也就没有太多的关注,所以好多特性可实现的功能也都是通过其他方式来处理的。最近开始对以往知识进行梳理,才有了这篇文章的出现。通过查阅相关资料,网站才有了下的总结,如果有遗漏的也欢迎留言告知!
[Required] : 必须输入
[Required]
public string UserName { get; set; }
同时可以添加提示信息
[Required(ErrorMessage ="请输入用户名")]
public string UserName { get; set; }
[StringLength] : 限制字符串长度;第一个是最大长度,必须的;后面的两个都是可选的,可根据实际使用情况决定是否使用
[Required(ErrorMessage ="请输入用户名")]
[StringLength(100,ErrorMessage ="输入内容长度在10到100之间",MinimumLength =10)]
public string UserName { get; set; }
[Range] : 限制取值范围;第一个参数是最小值,第二个参数是最大值(包含他们本身);可以用户int类型以及Double类型
[Range(0,100,ErrorMessage ="年龄超过了0~100范围")]
public int Age { get; set; }
[RegularExpression] : 必须符合某个正则表达式
(1)直接使用RegularExpression来写表达式
[RegularExpression(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Email输入错误")]
public string RegualarExpressionField { get; set; }
(2)自定义特性
public class EmailAttribute : RegularExpressionAttribute
{
public EmailAttribute()
: base(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")
{
}
}
[Compare]: 判等比较;验证输入的两个数据是否完全相同;最典型的例子就是注册时两次输入的密码是否相同
public string OldPwd { get; set; }
[Compare("OldPwd", ErrorMessage = "密码要相同")]
public string NewPwd { get; set; }
[Remote] : Ajax远程验证,返回值是bool类型 true表示验证通过
[Remote("CheckUserName", "Account")]
public string UserName { get; set; }
控制器Control
public JsonResult CheckUserName(string userName)
{
var result = userName == "admin";
return Json(result, JsonRequestBehavior.AllowGet);
}
[Display]:作用显示属性名,用法是要配合HTML用于显示字符串的标签一起使用的(@Html.LabelFor(s => s.Name))
效果:@Html.LabelFor(s => s.Name)在HTML代码中的 <label>学员名</label>
[Display(Name ="用户名")]
public string UserName { get; set; }
[DataType]:用作属性以什么HTML标签显示,用法必须和@Html.EditorFor(s => s.Name)一起使用
DataType是枚举类型有很多的HTML标签类型
[Display(Name ="用户名")]
[DataType(DataType.Text)]
public string UserName { get; set; }
[Bind]:使用BindAttribute的目的是限制用户在提交form表单时使用合适且正确的值。当我们提交一个表单时,就会检查每一个实体上绑定的特性
(1)在实体类中实现
[Bind(Exclude="Address")]
public class Employee
{
public string Name { get; set; }
public string Email { get; set; }
public string Address { get; set; }
public string PhoneNo { get; set; }
}
(2)直接在控制器的Action参数中
[HttpPost]
public ActionResult EmployeeRegister([Bind(Exclude ="Address")] Employee emp)
{
return View();
}
[HiddenInput]:如果我们想对用户隐藏一些实体字段,我们可以使用HiddenInput特性
[HiddenInput(DisplayValue=false)]
public string Name { get; set; }
[ValidateInput]:允许请求报文中出现危险标签字符
[ValidateInput(false)]//关闭 请求报文中 危险标签字符验证
public ActionResult Add(Models.Student stu)
{
if (!ModelState.IsValid)
{
return Content("验证未通过~~~!");
}
return View();
}
[OutPutCache]:缓存页面
[OutputCache(Duration=20)]//设置页面绝对缓存 缓存时间为 20秒
public ActionResult Index()
{
//详细代码
}
[HandleError]:异常处理
[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();
}
---------------------
原文:https://blog.youkuaiyun.com/mzl87/article/details/83048578
版权声明:本文为博主原创文章,转载请附上博文链接!