三层结构ASP.NET程序中,把实体类自动显示在页面上的例子(c#)

asp.net|程序|显示|页面

在这里我们假设这样一个场景:在一个三层bs系统(asp.net)中有一个实体类Student,包括Name,Age两个字段。现在需要把
这个实体类的数据显示在一个StudentInfo.aspx页面上,StudentInfo.aspx中有两个文本框:StudentName(用来显示Student.Name)
StudentAge(用来显示Student.Age).
下面的步骤将通过反射和Attribute来实现自动把Student实体显示在StudentInfo中:
1,首先,先需要实现一个Attribute用来表明实体类中的字段与界面中的控件的对应关系。
using System;
using System.Reflection
public class ControlIDAttribute:Attribute
{
public string ID;

public ControlIDAttribute(string id)
{
ID=id;
}
}
2,然后,需要在实体类中给字段绑上ControlID
using System;
public class Student
{
[ControlID("StudentName")]
public string name;
[ControlID("StudentAge")]
public int age;

public Class1(){}
}
3,实现一个工具类来完成实体类显示到界面上的工作
public class PageUtility
{
//遍历页面,绑定数据
public void BindData( Control control,object entity)
{
object temp=null;
foreach(Control c in control.Controls)
{
temp=GetValueFromEntity(c.ClientID,entity);

if(c is TextBox)
{
((TextBox)c).Text=temp.ToString();
}
if(c.HasControls())
{
BindData(c,entity);
}
}
}

//获取ControlIDAttribute为controlID的值
private object GetValueFromEntity(string controlID,object entity)
{
Type t = entity.GetType();
foreach(FieldInfo f in t.GetFields())
{
foreach(Attribute attr in Attribute.GetCustomAttributes(f))
{
if(attr is ControlIDAttribute && ((ControlIDAttribute)attr)._id == controlID )
{
return f.GetValue(entity);
}
}
}
return null;
}
}

时间: 2024-12-21 10:11:26

三层结构ASP.NET程序中,把实体类自动显示在页面上的例子(c#)的相关文章

在ASP.NET Atlas中调用Web Service—直接在ASPX页面上暴露Web Method

asp.net|web|页面 作者:Dflying Chen(http://dflying.cnblogs.com/) 前面的一系列的文章都是直接调用单独的一个Web Service,而在实际项目开发中,特别是在对现有的项目转换中,把页面中的逻辑再提取到专门的Web Service中往往会带来相当多的工作.Atlas充分考虑到了这一点,允许您将服务器端的public方法加上[WebMethod]属性以允许客户端JavaScript的直接调用. 想允许客户端直接调用定义在ASPX页面中的方法,您需

C# 三层中的实体类有什么用呢?

问题描述 我想问问假设现在有实体类(Model.cs)privatestringUID=string.empty;privatestringUNAME=string.empty;publicstringID{get{returnUID;}set{UID=value;}}publicstringNAME{get{returnUNAME;}set{UNAME=value;}}然后到业务逻辑层(BLL)最后就数据链路层(DAL)当中实体类就是用来干什么的,能举个例子说明吗? 解决方案 解决方案二:这样

在ASP.NET程序中存储和调用word文件

asp.net|word|程序 本文通过一个实例概要讲解如何在ASP.NET程序中配合SQL Server2000进行word文件的存储和调用过程(没有使用VBA ). (1) 建立数据库 首先,我们在数据库中建立一个表,表中有三个字段,fileName(varchar,50),postTime(datetime,8), fileContent(image,16),分别存储文件名称,上传时间和word文件的具体内容,其中fileName为主键.具体的SQL脚本如下: CREATE TABLE [

asp小偷程序中的字符串截取函数

函数|字符串|小偷程序 asp小偷程序中的字符串截取函数 以下是函数代码:'******************************************************************************** '    Function(公有) '    名称 :    字符串截取函数 '    作用 :    按指定首尾字符串截取内容(本函数为从左向右截取) '    参数 :    sContent ---- 被截取的内容 '        sStart ----

asp.net程序中最常用的三十三种编程代码

asp.net|编程|程序 asp.net程序中最常用的三十三种编程代码,为初学者多多积累经验,为高手们归纳总结,看了觉得很有价值~,大家不妨参考下!  1. 打开新的窗口并传送参数:   传送参数:  response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 

在ASP.NET程序中发送邮

asp.net|程序 如何在ASP.NET程序中发送邮件呢? 在ASP.NET程序中发送邮件不再象ASP中那样需要组件的支持了,在.NET的框架基类的System.Web.Mail名称空间内包含的MailMessage和SmtpMail类可以实现这个功能. 例如: Dim message As new Mail.MailMessage message.From = "web3@163.com" message.To = "web3@163.com" message.

如何在ASP.NET程序中显示程序集版本号

  于很多有趣的原因,ASP.NET程序中虽然可以往App_code目录中追加AssemblyInfo.cs文件,但位于该文件中的版本号总是无法正确的显示在用户面前. 如果你通过下面的语句企图像其他.NET应用程序一样获取Assembly中的版本号的话,你将永远得到一个0.0.0.0的字符串. System.Reflection.Assembly.GetAssembly(this.GetTyp e()).GetName().Version.ToString(); 很多人能说出一堆理由来告诉我企图

ASP.NET程序中常用编程代码

ASP.NET程序中常用编程代码 1.为按钮添加确认对话框 Button1.Attributes.Add("onclick","return confirm('确认?')");button.attributes.add("onclick","if(confirm('are you sure...?')){return true;}else{return false;}") 2.删除表格选定记录 //获得DataGrid主键in

ASP.NET程序中常用代码汇总_实用技巧

1. 打开新的窗口并传送参数: //传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="++"')</script>") //接收参数: string a = Request.QueryString("id"); string b = Request.QueryS