C# 如何在c中从列表中添加和检索行元素#
我正在使用Entityframework,在我的应用程序中,我定义了一个类,在该类中我设置了一些属性及其值。由于有一个分步过程,所以我将该类声明为列表,现在我需要在每个步骤中添加行或属性值C# 如何在c中从列表中添加和检索行元素#,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我正在使用Entityframework,在我的应用程序中,我定义了一个类,在该类中我设置了一些属性及其值。由于有一个分步过程,所以我将该类声明为列表,现在我需要在每个步骤中添加行或属性值 //i have declared class as list like below List<ProcessSteps> objSteps = new List<ProcessSteps>(); // for step 1 ProcessStep
//i have declared class as list like below
List<ProcessSteps> objSteps = new List<ProcessSteps>();
// for step 1
ProcessSteps obj = new ProcessSteps();
obj.id= 1;
obj.name= "v2k";
obj.Step=1;
objSteps.Add(obj);
// for step 2
ProcessSteps obj = new ProcessSteps();
obj.id= 2;
obj.name= "vvk";
obj.Step=2;
objSteps.Add(obj);
//我已将类声明为如下列表
List objSteps=新列表();
//对于步骤1
ProcessSteps obj=新的ProcessSteps();
对象id=1;
obj.name=“v2k”;
目标步骤=1;
objSteps.Add(obj);
//对于步骤2
ProcessSteps obj=新的ProcessSteps();
对象id=2;
obj.name=“vvk”;
目标步骤=2;
objSteps.Add(obj);
因此,在某个时刻,我需要访问ID1和ID2,但我无法通过objSteps,因为每次objSteps都会覆盖上一个。在调试中显示我为1。
你应该考虑一个ASP.NET页面生命周期,每次你的应用程序收到一个请求时,它会重新创建你的类的新实例(代码落后),所以不管你在类级别上有一个字段,它都会被每个请求重新定义。 那么,您可以做些什么来保持您的
状态
asp.net webforms中有和,您可以使用
在您的情况下,可能是这样的:
public List<ProcessSteps> Steps
{
get
{
if(ViewState["ProcessSteps"] == null)
ViewState["ProcessSteps"] = new List<ProcessSteps>();
return (List<ProcessSteps>)ViewState["ProcessSteps"];
}
set
{
ViewState["ProcessSteps"] = value;
}
}
公共列表步骤
{
得到
{
if(ViewState[“ProcessSteps”]==null)
ViewState[“ProcessSteps”]=新列表();
返回(列表)视图状态[“ProcessSteps”];
}
设置
{
ViewState[“ProcessSteps”]=值;
}
}
最初,您的逻辑将给出如下错误
此范围中已定义名为“obj”的局部变量
因此,尝试更改实例名称。我只是根据您的逻辑创建了一个控制台应用程序,如
static void Main(string[] args)
{
List<ProcessSteps> objSteps = new List<ProcessSteps>();
// for step 1
ProcessSteps obj = new ProcessSteps();
obj.id = 1;
obj.name = "v2k";
obj.Step = 1;
objSteps.Add(obj);
// for step 2
ProcessSteps obj2 = new ProcessSteps();
obj2.id = 2;
obj2.name = "vvk";
obj2.Step = 2;
objSteps.Add(obj2);
foreach (var item in objSteps)
{
Console.WriteLine(item.name);
}
Console.ReadLine();
}
static void Main(字符串[]args)
{
List objSteps=新列表();
//对于步骤1
ProcessSteps obj=新的ProcessSteps();
obj.id=1;
obj.name=“v2k”;
目标步骤=1;
objSteps.Add(obj);
//对于步骤2
ProcessSteps obj2=新的ProcessSteps();
obj2.id=2;
obj2.name=“vvk”;
obj2.Step=2;
objSteps.Add(obj2);
foreach(对象步骤中的变量项)
{
Console.WriteLine(项目名称);
}
Console.ReadLine();
}
它工作正常。每一步都有一个回发。这意味着您在每一步初始化ObjStep时都会回发它…为什么添加一个新值来列出,而不是写入列表中以前的值list@CodingDefined没有初始化一次的objSteps,但我在每个步骤上初始化obj,因为每个步骤都有回发,页面将再次加载,对象步骤将再次初始化。当您再次添加它时,因为新的objSteps没有任何值,它将添加并显示1。