65.9K
CodeProject 正在变化。 阅读更多。
Home

使用反射进行 WebForms 自动生成(2)

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.87/5 (7投票s)

2005年6月24日

1分钟阅读

viewsIcon

31890

downloadIcon

328

本文继续介绍 Web Form 自动生成系列。

引言

上一篇文章 中,我向您介绍了一个项目,该项目通过类生成自动构建表单。

这次我们将探讨项目中使用的反射的基础知识。

Reflection(反射)

您可以使用反射来获取类的内部信息。

我不会向您讲解关于反射的所有内容,这个主题有很多内容可以讨论。有关更多信息,请访问我的 博客

我将向您展示如何读取类的 public 属性并生成一个简单的表单。这是我们在生成方面的第一次尝试,而不是我们想要构建的最终组件。

使用 FormGen

首先,我们将创建一个名为 FormGen 的类。以下是该类的声明

class FormGen {
    public static void Generate(Type classType, TextWriter output);
}

您可以在 ASP.NET 中以以下方式使用此类

class MyForm

{

   public string Email;

   public string Password;

   public string Comments;

}
....
private void Page_Load(object sender, EventArgs e)
  {
    if (!IsPostBack)
     FormGen.Generate(typeof(MyForm), Response.Output);
  }

实现 GenForm

您可以下载 GenForm 的实现。这是我们在第一次尝试探索这项技术中的基本实现。以下是实现一个简单的反射表单生成器的核心代码

using System;
using System.IO;
using System.Reflection;
...

public static void Generate(Type classType, TextWriter output)
{
   WriteTableHeader(output);
   FieldInfo[] fields = classType.GetFields ();
   for (int i = 0; i < fields.Length; i++) 
   {
         WriteRow(output, fields[i].Name, 
                      InputText(fields[i].Name));
   }
   WriteTableFooter(output);
}

这非常有限…… 在这个实现中,我们只关注文本输入框。

下一步

在下一篇文章中,我们将使用属性来更好地处理表单的格式。

敬请期待 .... :)

© . All rights reserved.