首页 > 编程 > .NET > 正文

ASP.NET中实现Form表单字段值自动填充到操作模型中_.Net教程

2024-07-10 12:53:03
字体:
来源:转载
供稿:网友

推荐:ASP.NET中的Cache使用介绍
这篇文章主要介绍了ASP.NET中的Cache使用介绍,本文讲解了Cache 是怎么工作的、Cache 怎么创建及怎么销毁、什么时候用cache、cache 调用注意事项等内容,需要的朋友可以参考下 Cache 即高速缓存 ,我想非常多人对他的第一印象一定像我相同,感觉他一定能提高系统得性能和

   这篇文章主要介绍了ASP.NET中实现Form表单字段值自动填充到操作模型中,本文模仿MVC模式中的自动映射表单了模型,使用泛型和反射实现,需要的朋友可以参考下

  我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中

  比如

   代码如下:

  action方法 Register(UserModel userModel)

  {

  .............................

  }

  在提交表单的时候,会自动讲表单里面的字段封装到对应的UserModel字段里面

  那么 WebForm里面可不可以也紫将呢?

  因为每次都要去获得数据,优秀的程序员应该要学会代码封装,代码复用,重复的工作不要做

  我们其实可以利用反射来实例化对象的(自动装配)

  好了废话不多....

  pageload里面很简单了

   代码如下:

  protected void Page_Load(object sender, EventArgs e)

  {

  if (!IsPost())

  {

  InitPage();//第一次访问呈现页面

  }

  else

  {

  UserModel userModel = AssembleModel(base.valueCollection);

  }

  }

  关键就是基类里面的AssembleModel 方法了

  基类里面

  我们首先获取到上下文的参数 IT404

   代码如下:

  protected NameValueCollection valueCollection = HttpContext.Current.Request.Params;

  基类很简单,就是将上下文的提交的参数存放到valueCollection

  然后再看AssembleModel方法了,这是一个泛型方法

  代码如下:

  ///

 

  /// 反射获取类的属性

  ///

 

  ///

  ///

  protected PropertyInfo[] GetPropertyInfoArray(Type type)

  {

  PropertyInfo[] props = null;

  try

  {

  object obj = Activator.CreateInstance(type);

  props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);

  }

  catch (Exception ex)

  {

  }

  return props;

  }

  ///

 

  /// 根据NameValueCollection 自动装配

  ///

 

  ///

  ///

  ///

  protected T AssembleModel(NameValueCollection valueCollection)

  {

  PropertyInfo[] propertyInfoList = GetPropertyInfoArray(typeof(T));

  object obj = Activator.CreateInstance(typeof(T), null);//创建指定类型实例

  foreach (string key in valueCollection.Keys)//所有上下文的值

  {

  foreach (var PropertyInfo in propertyInfoList)//所有实体属性

  {

  if (key.ToLower() == PropertyInfo.Name.ToLower())

  {

  PropertyInfo.SetValue(obj, valueCollection[key], null);//给对象赋值

  }

  }

  }

  return (T)obj;

  }

  很简单,就是遍历参数,然后用反射遍历出实体类的共有属性,然后根据名字name来匹配和赋值

  所以以后我们只需要一句代码 就能自动装配上从客户端存过来的值了

  代码如下:

  UserModel userModel = AssembleModel(base.valueCollection);

分享:ASP.NET OutputCache详解
这篇文章主要介绍了ASP.NET OutputCache详解,本文详细讲解了OutputCache的语法、OutputCache的参数、OutputCache使用示例等内容,需要的朋友可以参考下 当用户访问页面时,整个页面将会被服务器保存在内存中,这样就对页面进行了缓存。当用户再次访问该页,页面不会再次

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表