MVC 特性使用总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mzl87/article/details/83048578

对于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();
}

注意:以上内容至少需要两个命名空间:1、using System.ComponentModel.DataAnnotations; 2、using System.Web.Mvc;

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/83048578