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.         }  
  • 相关阅读:
    [原创]设计模式建造者模式
    [原创]设计模式抽象工厂模式
    svn的branch/tag(转)
    [原创]设计模式访问者模式
    自定义安装python,退格,方向键无法正常使用(转)
    关于UDP 数据包长度的选择
    cent os 查看服务器信息
    【开源】QuickPager 分页控件的内部结构,和OO原则与设计模式
    【思路】表单控件和查询控件,整理一下思路。
    【测试】两种数据库,四种分页算法的效率比较
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/4641046.html
Copyright © 2011-2022 走看看