如何在用户控件中传递属性和方法(Reflection)
来源:互联网 发布:小米手机2a是什么网络 编辑:程序博客网 时间:2024/05/14 18:34
如何在用户控件中传递属性和方法?由于控件的执行在页面执行之后,因此常常是无法获取控件传递的值。如:上传文件控件,如果做成用户控件则在提交时无法获取上传的文件名,解决的方法是用反射机制(Reflection),定义用户控件的属性,用来传值,定义用户控件的方法,用来传递属性值到调用页面。
页面Page中Page_Load:
//用Reflection(反射机制)获取用户控件的类型.此处为:ucType = {Name = "usctrlupload_ascx" FullName = "ASP.usctrlupload_ascx"} usctrlupload_ascx是用户控件名对应的名称,是从调试中复制。
Type ucType = UsCtrlUpload1.GetType ();
//用PropertyInfo获取用户控件中的属性.
PropertyInfo UctextName= ucType.GetProperty("PicName");//PicName是用户控件中的属性,定义如后附。
//设置和获取用户控件中的值.
UctextName.SetValue(UsCtrlUpload1,"123456",null );//用 PropertyInfo实例的方法测试赋值。只是测试一下设置值的效果,主要的是下面如何获取控件的属性值。
Label2.Text = UctextName.GetValue (UsCtrlUpload1,null ).ToString ();//UsCtrlUpload1用户控件 ID。
//这样也可以获取和设置控件中的属性值.但好象不稳定,时行时不行的.
Label2.Text = UsCtrlUpload1.PicName;
页面 Page的 Button事件中:
protected void Button1_Click(object sender, EventArgs e)
{
Type ucType = UsCtrlUpload1.GetType();
//用MethodInfo类来获取用户控件中的方法.
MethodInfo UcMethod = ucType.GetMethod("Button1_Click");// Button1_Click控件中的方法。
//在此处页面的方法中执行用户控件中的方法.
object[] argumentArrray = new object[2];
UcMethod.Invoke(UsCtrlUpload1, argumentArrray);//调用用户控件中的方法。此处执行了!!。
PropertyInfo UctextName = ucType.GetProperty("PicName");
Label2.Text = UctextName.GetValue(UsCtrlUpload1, null).ToString();//获取了上传的文件名信息。并显示在 page页面上。
//这样也可以获取和设置控件中的属性值.但好象不稳定,时行时不行的.
//Label2.Text = UsCtrlUpload1.PicName;
}
附:
用户控件.cs文件中定义的属性:
public string PicName
{
get { return Label2.Text; }
set { Label2.Text = value; }
}
用户控件.cs文件中定义的方法:
public void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
Label2.Text = FileUpload1.PostedFile.FileName;
}
注:此处借用了Button的事件方法,完全可以随意改。并且控件中没有Button,Button是放在页面中的。
页面Page中Page_Load:
//用Reflection(反射机制)获取用户控件的类型.此处为:ucType = {Name = "usctrlupload_ascx" FullName = "ASP.usctrlupload_ascx"} usctrlupload_ascx是用户控件名对应的名称,是从调试中复制。
Type ucType = UsCtrlUpload1.GetType ();
//用PropertyInfo获取用户控件中的属性.
PropertyInfo UctextName= ucType.GetProperty("PicName");//PicName是用户控件中的属性,定义如后附。
//设置和获取用户控件中的值.
UctextName.SetValue(UsCtrlUpload1,"123456",null );//用 PropertyInfo实例的方法测试赋值。只是测试一下设置值的效果,主要的是下面如何获取控件的属性值。
Label2.Text = UctextName.GetValue (UsCtrlUpload1,null ).ToString ();//UsCtrlUpload1用户控件 ID。
//这样也可以获取和设置控件中的属性值.但好象不稳定,时行时不行的.
Label2.Text = UsCtrlUpload1.PicName;
页面 Page的 Button事件中:
protected void Button1_Click(object sender, EventArgs e)
{
Type ucType = UsCtrlUpload1.GetType();
//用MethodInfo类来获取用户控件中的方法.
MethodInfo UcMethod = ucType.GetMethod("Button1_Click");// Button1_Click控件中的方法。
//在此处页面的方法中执行用户控件中的方法.
object[] argumentArrray = new object[2];
UcMethod.Invoke(UsCtrlUpload1, argumentArrray);//调用用户控件中的方法。此处执行了!!。
PropertyInfo UctextName = ucType.GetProperty("PicName");
Label2.Text = UctextName.GetValue(UsCtrlUpload1, null).ToString();//获取了上传的文件名信息。并显示在 page页面上。
//这样也可以获取和设置控件中的属性值.但好象不稳定,时行时不行的.
//Label2.Text = UsCtrlUpload1.PicName;
}
附:
用户控件.cs文件中定义的属性:
public string PicName
{
get { return Label2.Text; }
set { Label2.Text = value; }
}
用户控件.cs文件中定义的方法:
public void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
Label2.Text = FileUpload1.PostedFile.FileName;
}
注:此处借用了Button的事件方法,完全可以随意改。并且控件中没有Button,Button是放在页面中的。
- 如何在用户控件中传递属性和方法(Reflection)
- 如何在用户控件中传递属性和方法(Reflection)
- 如何在ASP.NET中制作Web用户自定义控件,并在aspx页面中使用它的方法和属性?
- 使用MVC框架中要注意的问题(五):如何在页面和用户控件之间传递数据
- 使用MVC框架中要注意的问题(五):如何在页面和用户控件之间传递数据
- 使用MVC框架中要注意的问题:如何在页面和用户控件之间传递数据
- 在用户控件中自定义属性
- 在用户控件中添加属性
- 使用用户控件属性和方法
- 用户控件如何把属性,事件,显示在属性栏
- 技巧和诀窍:如何在Web.config中注册用户控件和自定义控件
- 技巧和诀窍:如何在Web.config中注册用户控件和自定义控件
- [转]技巧和诀窍:如何在Web.config中注册用户控件和自定义控件
- 如何在Web.config中注册用户控件和自定义控件
- 如何在Web.config中注册用户控件和自定义控件
- 如何在Web.config中注册用户控件和自定义控件
- 如何在Web.config中注册用户控件和自定义控件
- 如何在Web.config中注册用户控件和自定义控件
- 一位软件工程师的6年总结
- “高级”程序员应具备哪些素质
- 一段c语言实现的发送http消息代码
- 如何写一份好的工程师简历
- 在GNOME中使用Global Menu
- 如何在用户控件中传递属性和方法(Reflection)
- 测试外链图片
- 计算机组成与结构…江南大学视频课程
- Java初学者必须理解的六个大问题
- 三级联动菜单
- CAST and CONVERT (Transact-SQL)
- 45个新鲜出炉的jQuery插件
- Linux中/proc目录下文件详解(zt)
- 新手编内核