zoukankan      html  css  js  c++  java
  • MVC 扩展方法特点

     .NET MVC 3中扩展方法特点:

        (1)扩展类的名称以Extensions结尾;

        (2)扩展类的类型是static;

        (3)扩展方法至少有一个参数,第一个参数必须指定该方法作用于哪个类型,并且该参数以this修饰符为前缀;

        (4)扩展方法的类型是static;

        (5)如果拓展方法的返回值是字符串则返回类型是MvcHtmlString,而不是string;

        (6)页面调用必须用using指令导入扩展类型所在的命名空间。

    1.  <label for="Address">Address:</label> 
    2.                 <%= Html.TextBox("user.Address")%>
    3.               <%= Html.ValidationMessage("user.Address")%> 
      1. var errors = DataAnnotationsValidationRunner.GetErrors(user);  
      2.             if (errors.Any())  
      3.             {  
      4.                 new RulesException(errors).AddModelStateErrors(ModelState,"user");  
      5.             }  
        1. public static IEnumerable<ErrorInfo> GetErrors(object instance)  
        2.         {  
        3. var metadataAttrib = instance.GetType().GetCustomAttributes(typeof(MetadataTypeAttribute), true)
        4. .OfType<MetadataTypeAttribute>().FirstOrDefault();  
        5.             var buddyClassOrModelClass = metadataAttrib != null ? metadataAttrib.MetadataClassType : instance.GetType();  
        6.             var buddyClassProperties = TypeDescriptor.GetProperties(buddyClassOrModelClass).Cast<PropertyDescriptor>();  
        7.             var modelClassProperties = TypeDescriptor.GetProperties(instance.GetType()).Cast<PropertyDescriptor>();  
        8.  
        9.             return from buddyProp in buddyClassProperties  
        10.                    join modelProp in modelClassProperties on buddyProp.Name equals modelProp.Name  
        11.                    from attribute in buddyProp.Attributes.OfType<ValidationAttribute>()  
        12.                    where !attribute.IsValid(modelProp.GetValue(instance))  
        13.                    select new ErrorInfo(buddyProp.Name, attribute.FormatErrorMessage(string.Empty), instance);  
        14.         }  
  • 相关阅读:
    Node.js连接MySQL数据库及构造JSON的正确姿势
    Lyx输入中文与代码高亮
    查看文件编码 + 查看文件扩展名 + 文件编码转换
    系统重装/装Anaconda后,Windows开始菜单缺少快捷方式解决方案
    Python动态网页爬虫-----动态网页真实地址破解原理
    多线程爬虫
    openpyxl基本操作
    BitMap原理
    Trie(前缀树/字典树)及其应用
    tensorflow和pytorch教程
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4641046.html
Copyright © 2011-2022 走看看