2014-06-27 19 views
0

我使用的EntityFramework和我的應用程序定義中,我設置的某些屬性和它們values.As有一個逐步的過程,所以我已經宣佈,一個類類作爲List現在我需要在每一步添加行或屬性值。如何添加和檢索行的C#從List元素

//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); 

所以在某些時候我需要訪問這兩個ID 1和2,但我n不是能夠通過objSteps得到,因爲每次objSteps覆蓋前一個。和調試表明我算作1

+0

每一步有一個回傳.. – vivek

+0

因此,這意味着要初始化objSteps它的每一步... – CodingDefined

+0

爲什麼添加一個新的值列表<>在列表中寫入之前的值 – vivek

回答

0

你應該考慮一個asp.net頁面生命週期,每一個應用程序都自帶一個請求時,將重新創建類的一個新實例(後面的代碼),所以也無所謂如果您在課堂級別上有一個字段,則會根據每個請求重新定義它。

所以你能做些什麼來保護你的state

有在asp.net web表單,您可以使用ViewStateSession

在你的情況可能是這樣的:

public List<ProcessSteps> Steps 
{ 
    get 
    { 
     if(ViewState["ProcessSteps"] == null) 
      ViewState["ProcessSteps"] = new List<ProcessSteps>(); 
     return (List<ProcessSteps>)ViewState["ProcessSteps"]; 
    } 
    set 
    { 
     ViewState["ProcessSteps"] = value; 
    } 
} 
0

開始你的邏輯會給錯誤,如

A local variable named 'obj' is already defined in this scope

所以試圖改變自己的實例name.I剛剛創建基於你的邏輯一個控制檯應用程序像

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(); 
    } 

,它工作正常。

相關問題