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.         }  
  • 相关阅读:
    docker4dotnet #1 – 前世今生 & 世界你好
    DockerCon 2016 – 微软带来了什么?
    TFS 2015 敏捷开发实践 – 看板的使用
    几款Git GUI客户端工具
    (视频)Erich Gamma 与 Visual Studio Online 的一点野史
    GitHub + VSTS 开源代码双向同步
    UDAD 用户故事驱动的敏捷开发 – 演讲实录
    用户故事驱动的敏捷开发 – 2. 创建backlog
    算法 之 简单选择排序法
    算法 之 冒泡排序法
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4641046.html
Copyright © 2011-2022 走看看