WebForm中c#中如何将字符串声明为一个变量或控件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebForm中c#中如何将字符串声明为一个变量或控件名相关的知识,希望对你有一定的参考价值。

请教各位:
我现在得到一个字符串,如"y1",我想把y1声明为一个数组或一个控件,请问该如何做?
简单的说就是想实现下述类似功能:

int [] (“y”+"1")=new int[0];

先说说你这样做的目的是什么,如果你只是想从y1这个字符中来得到一个数组或者控件,有很多种方法,比如说
Dictionary<string,int[]> dic=new Dictionary<string,int[]>();
int[] arr=new int[10];
dic.Add("y1",arr);

之后你就可以用dic["y1"]来取得这个数组,当然也可以直接用诸如dic["y1"][2]来访问数组中的元素追问

为什么总提示“dic为字段,但在此处被当作类型来使用”?谢谢

追答

你多半是把代码放错地方了,上面的代码要放在某个方法中(比如某个按钮单击事件中)

参考技术A 作为控件简单,就将控件的名称命名为Y1,查找:this.FindControl("Y1");追问

请问具体该怎么写呢,新手一个,可不可以就以“y”+"1"这个字符串声明为int数组为例帮我演示一下。

追答

。。。按照你说的是有点麻烦。。。

1、 如果你的Y1,Y2这种变量不是很多,就先定义好,就不用去声明了。

   查找变量就使用反射;

    例:

 class Program

    public int num1 = 1;
    public int num2 = 2;
    public int num3 = 3;
    static void Main(string[] args)
    
        Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
        Type type = assembly.GetType("csdn测试.Program");
        object obj = Activator.CreateInstance(type, true);
        FieldInfo classField = type.GetField("num"+1);
        Console.WriteLine("num"+1+":" + classField.GetValue(obj).ToString());
        Console.Read();
    

2、 或者使用控件,可以动态生成控件,名称命名为Y1 、Y2...

    查找控件就使用FindControl("Y1");方法。

参考技术B 您可以定义一个带key值的数据结构 通过key值来调用您的数组或控件
private void Form1_Load(object sender, EventArgs e)

Dictionary<string,IntArray> dic =new Dictionary<string,IntArray>();
dic.Add("y1", new IntArray());
int[] yourintArray=dic["y1"].intArray;

//
public class IntArray

public int[] intArray get; set;
public IntArray()

intArray=new int[2];

参考技术C 需要用到反射
或者使用findcontrol这样的方法

webform基础

一、WebForm 运行流程
(1)需要访问数据库
用户--IIS服务器--.net Framwork--Sqlserver--数据处理--IIS服务器--用户
(2)显示HTML页面
用户--IIS服务器--用户

二、用文本文档编写代码编,写完成后将后缀改为HTML或ASPX格式
(1)HTML格式
使用html编写代码
(2)ASPX格式
使用c#和html编写代码
使用c#语言时:
<%@ %>声明语言或引用命名空间<%@ Language="c#"%><%@ Import NameSpace="System.Data.SqlClient"%>
<%= %>只能放c#代码
<% %>一个字段或一个变量<%=dr[0].ToString() %>

三、 webForm 与 winForm
(1)WEB端目的:
用户通过浏览器,访问服务器, 服务器将所有的C#代码及数据库数据执行完毕后,
将结果变为html代码返回给用户浏览器
(2)客户端功能代码执行位置:用户电脑上执行
Web端功能代码执行位置:服务器上执行
(3)webForm需要IIS安装 
1)安装:控制面板--程序或功能--打开或关闭windows功能--Internet信息服务(打上勾)--确定

2)让vs和IIS相互认识
vs:vs2012--Visual Studio Tools--VS2012 x64/x86 兼容工具命令提示(右键管理员启动)--出现路径后加上aspnet_regiis -i

四、启动状态
1 直接启动 出现提示框确定就可以
优点:可以卡断点 ;缺点:慢;
2 在HTML代码处右键--在浏览器中查看
优点:快;修改后保存可直接刷新显示。
3 事件的委托写法(位置构造函数中)
控件.事件+= 按两下Tab

五、HTTP无状态性
1 定义:一个浏览者发出的请求都是由实现了IHttpHandler接口的对象进行响应,由于下次访问不一定还是上次那个对象进行响应,
上次响应完毕对象可能已经被销毁了,写的类变量值早就不存在了。所以,Http协议是无状态的,服务器不记得上次给了浏览器什么。
无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请求结果返回给浏览器后,会关闭当前Socket连接。而且服务器会
在处理页面完毕后销毁页面对象。
http协议是无状态的,不会记住上次和网页“发生了什么”。服务器不记得上次给了浏览器什么,浏览器需要记住这些值(input 就
记在value中,对于其他值就放在隐藏字段中,比如viewstate),下次再提交的时候再发到服务器,从而实现交互的效果!
2 控件默认显示的内容
在构造函数中
if(IsPostBack==false)//页面第一次加载时显示
{}
3 事件的委托事件不能写入

六、数据库连接
(1)App_Code:右键--添加--类--确定--自动生成App_Code;
(2)实体类与数据访问类没有命名空间

七、三层开发
1界面层:HTML+CSS+JS
2业务逻辑层:c#代码
3数据访问层:APO.NET
注意:用CSS+JS操作控件属性
界面上的任何效果和内容都要使用纯CSS和JS来制作样式和特效

 
 
 
好文要顶 已关注 收藏该文  

以上是关于WebForm中c#中如何将字符串声明为一个变量或控件名的主要内容,如果未能解决你的问题,请参考以下文章

webform

如何将临时变量声明为 C# 表达式?

webform基础

WebForm基础

2017-05-18WebForm的Repeater控件和一些简单控件

C#如何将PDF内容显示在webform中