日期:2014-05-17  浏览次数:20442 次

model
这是model里边的内容,Required 我知道是 必须填的字段,如果不填,就会报错。  
[Display(Name = "账号")] 是什么用呢?


C# code

    public class LogOnModel
    {
        [Required]
        [Display(Name = "账号")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }

        [Display(Name = "登录信息")]
        public bool RememberMe { get; set; }
    }





------解决方案--------------------
[]这种写法叫Attribute,供反射调用的时候查询。

写在Arrtibute中的类型必须从Attribute类继承,显然DataType.Password应该是个枚举,所以不行。

具体这些Attribute能做什么,取决于调用它的类,比如Model.xxxFor方法,它会去读取Model中对象的Attribute,并且产生对应的html和js代码。ASP.NET MVC是开放源代码的,如果有兴趣,你可以用attribute类名作为条件在代码中搜索。
------解决方案--------------------
反射可以获得任意类型附加的attribute,这里指你的模型类。
------解决方案--------------------
更像是给类或者类的成员贴的“标签”。这个标签是给动态加载或者调用它们的调用者准备的,让它们更好地理解这个对象或者字段的含义、用途。

和C/C++不同,C#或者说.NET中的对象或者函数,都是自描述的,也就是说,程序中包含了对程序自身的描述信息。你甚至不需要文档,就可以得知一个库有什么功能,这是C/C++做不到的。