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.         }  
  • 相关阅读:
    redis报错io.lettuce.core.RedisCommandTimeoutException: Command timed out after
    showloading showtoast一起用
    uniapp,mpvue微信,支付宝兼容性说明
    uniapp 自定义组件
    Vue 函数式组件 functional
    mac uninstall node ,npm from official
    mpvue问题记录:组件方法执行机制
    linux 文件 分割重组
    MySql日期操作
    .NET Core连接数据库
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4641046.html
Copyright © 2011-2022 走看看