• HtmlHelper


    HtmlHelper类

    public class HtmlHelper<TModel> : HtmlHelper类

    因为HtmlHelper<TModel>继承自HtmlHelper,所以HtmlHelper<TModel>的对象,两者的扩展方法都可以使用.

    在View页面中使用的Html,是 public abstract class WebViewPage<TModel> : WebViewPage中的一个属性,类型是HtmlHelper<TModel>.可以使用所有的这些扩展的方法

    clip_image001

    clip_image002

    HtmlHelper<TModel> :对HtmlHelper的继承,主要是通过通过ViewDataDictionary<TModel>对ViewDataDictionary的继承实现的.

    ViewDataDictionary<TModel>中对Model属性进行了重写覆盖隐藏,以达到泛型的目的.主要是处理Model的类型

    public class ViewDataDictionary<TModel> : ViewDataDictionary
        {
    
            public ViewDataDictionary()
    
                :
    
                base(default(TModel))
            {
    
            }
    
            public ViewDataDictionary(TModel model)
    
                :
    
                base(model)
            {
    
            }
    
            public ViewDataDictionary(ViewDataDictionary viewDataDictionary)
    
                :
    
                base(viewDataDictionary)
            {
    
            }
    
            public new TModel Model
            {
    
                get { return (TModel)base.Model; }
    
                set { SetModel(value); }
    
            }
    
            public override ModelMetadata ModelMetadata
            {
    
                get
                {
    
                    ModelMetadata result = base.ModelMetadata;
    
                    if (result == null) {
    
                        result = base.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel));
    
                    }
    
                    return result;
    
                }
    
                set { base.ModelMetadata = value; }
    
            }
    
            protected override void SetModel(object value)
            {
    
                bool castWillSucceed = TypeHelpers.IsCompatibleObject<TModel>(value);
    
                if (castWillSucceed) {
    
                    base.SetModel((TModel)value);
    
                } else {
    
                    InvalidOperationException exception = (value != null)
    
                    ? Error.ViewDataDictionary_WrongTModelType(value.GetType(), typeof(TModel))
    
                    : Error.ViewDataDictionary_ModelCannotBeNull(typeof(TModel));
    
                    throw exception;
    
                }
    
            }
    
        }

    HtmlHelper<T>.Edit 泛型方法的第一个参数已经通过对象的类型指定了,不能是别的类型,必须和Helper的实例泛型类型相同

    HtmlHelper<T>.EditFor 泛型方法可以根据参数推断出泛型类型.

    HtmlHelper<T>.EditForModel Html对象有Model的相关信息,所以可以根据元数据信息生成页面代码.

  • 相关阅读:
    单点登陆
    【springmvc学习】常用注解总结
    Excel里函数中的万金油,你确定不要点进来看看?
    Maven3在Eclipse上安装插件
    VSCode 云同步扩展设置 Settings Sync 插件
    Ubuntu 18.04 root 使用ssh密钥远程登陆
    [Asp.net] C# 操作Excel的几种方式 优缺点比较
    开源框架Autofac使用入门
    C# .net Ueditor实现图片上传到阿里云OSS 对象存储
    [python]TypeError: string indices must be integers解决方法
  • 原文地址:https://www.cnblogs.com/zhangliming/p/4567277.html
Copyright © 2020-2023  润新知