2014-03-27 30 views
0

所以我有一個.cs類頁面storage.cs我已經把我的學生數組詳細信息在這個頁面,你可以看到。我想用這個作爲我的數據源/數據庫的學生登錄細節。登錄LINQ與登錄(陣列)列表數據集在另一個C#文件

我想在login.cs中查詢這個數組List。基本上我想檢查用戶名和密碼是否匹配(在login.cs中),所以用戶可以登錄。我怎樣才能在另一個文件中訪問這個學生列表並且可以使用它。

storage.cs 

namespace Program1 
{ 
public class class2 
{ 
    public class Person 
    { 
     // Member Variables 

     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string DateOfBirth { get; set; } 
     public string Gender { get; set; } 
    } 

    public class Student : Person //student inherits from Person class 
    { 
     public string StudentNumber { get; set; } 
     public DateTime EnrollmentDate { get; set; } 
     public string UserName { get; set; } 
     public string Password { get; set; } 
     public string AwardID { get; set; } 
     public string[] modules { get; set; } 


    } 



     public void allStudents(string User_name, string _password) 
     { 

      List<Student> st = new List<Student>{ 
     new Student { StudentNumber="CE52103-2", 
      FirstName ="AAA", 
      LastName = "BBB", 
      UserName = "CCC", 
      Password ="DDD", 
      DateOfBirth = "", 
      Gender ="", 
      AwardID =""}, 


     new Student { StudentNumber="CE52603-2", 
      FirstName ="BBB", 
      LastName = "DDD" , 
      UserName = "FFF", 
      Password ="GGG", 
      DateOfBirth = "", 
      Gender = "", 
      AwardID =""}, 

     new Student { StudentNumber="CE52302-2", 
      FirstName ="GGG", 
      LastName = "HHH", 
      UserName = "KKK", 
      Password ="LLL", 
      DateOfBirth = "", 
      Gender ="", 
      AwardID =""}, 
     }; 


     } 
} 

}

這裏是我試圖在我的按鈕單擊事件login.cs做,但不起作用。我對c#很新,所以p'se別笑。

login.cs 

     protected void ButtonLogin_Click(object sender, EventArgs e) 

    { 
    Program1.class2.Student bb_ = new Program1.class2.Student(); 



    List<Student> st = new List<Student>();// I dont know how to acces this List :(

    st.Add(new Student 
    { 
     UserName = _username, 
     Password = _password, 

    }); 

    var stquery = (from Student student in st 
        where student.UserName.Equals(_username) && 
        student.Password.Equals(_password) 
        select student).FirstOrDefault(); 

    if (stquery == null) 
    { 
     //Login failded 
    } 
    else 
    { 
     //Login successful 
    } 

} 

我真的被困在這。我可以很容易地使用數據庫,但這項任務不允許我們使用。歡迎任何幫助。

+0

謝謝@Pedro,目前,我似乎無法創建一個類的實例。我必須在當前正在查詢的頁面添加哪些參考?此刻,這是我得到的錯誤「無法找到類型或命名空間名稱'學生',你是否缺少使用指令或程序集引用」。 –

+0

刪除包裝類「class2」。沒用的。這是一個命名空間的JavaScript代理。 –

+0

再次感謝@佩德羅,但我仍然有問題。我已經嘗試了你建議的兩種方法,但他們都未能奏效。我已經在不同的文件中分離了兩個類。我的猜測是問題出在「.allStudents();」上。我以哪種方式做到這一點。我得到這個錯誤'學生不包含「allStudents」的定義,也沒有包含接受'Student'類型的第一個參數的擴展方法'allStudents';我更接近放棄:( –

回答

0

改變你的類的簽名,以返回你要跟學生是這樣的:

public List<Student> allStudents(string User_name, string _password) 
{ 
     List<Student> st = new List<Student>{ 
     new Student { StudentNumber="CE52103-2", 
      FirstName ="AAA", 
      LastName = "BBB", 
      UserName = "CCC", 
      Password ="DDD", 
      DateOfBirth = "", 
      Gender ="", 
      AwardID =""}, 

     new Student { StudentNumber="CE52603-2", 
      FirstName ="BBB", 
      LastName = "DDD" , 
      UserName = "FFF", 
      Password ="GGG", 
      DateOfBirth = "", 
      Gender = "", 
      AwardID =""}, 

     new Student { StudentNumber="CE52302-2", 
      FirstName ="GGG", 
      LastName = "HHH", 
      UserName = "KKK", 
      Password ="LLL", 
      DateOfBirth = "", 
      Gender ="", 
      AwardID =""}, 
     }; 
     return st; 
} 

,那麼你需要創建類學生的實例來訪問您的登錄頁面列表

編輯: 您可以在class2之外聲明您的班級學生並以此方式創建實例:

Student student = new Student(); 
    list<Student> studentList = student.allStudents(); 

或與此嘗試,如果你使用嵌套類

Program1.class2.Student student = new Program1.class2.Student(); 
    list<Program1.class2.Student> studentList = student.allStudents(); 

那麼你將能夠通過這個列表

var stquery = (from var s in studentList 
        where s.UserName.Equals(_username) && 
        s.Password.Equals(_password) 
        select s).FirstOrDefault(); 
+0

謝謝@Pedro,目前,我似乎無法創建一個類的實例,我必須添加到我正在查詢的當前頁面的什麼參考?那麼,我得到的錯誤「無法找到類型或命名空間名稱'學生',您是否缺少使用指令或程序集引用」 –

+0

刪除您作爲包裝器的類2,將不同文件中的每個類分開 –

+0

我已經添加了兩個選項,請閱讀我的編輯 –

0

解決做了LINQ,首先感謝你@ Pedro爲您提供幫助,只需在類文件中編寫login方法稍微抽搐一下,然後在login.cs中調用該方法即可。 這裏是我的最終代碼,以防萬一有人發現它有用。

class3.cs 

    public class Class3 
    { 
    public static List<_Student> st = new List<_Student> 
    { 

    new _Student { StudentNumber="CE52103-2", 
     FirstName ="AAA", 
     LastName = "BBB", 
     UserName = "CCC", 
     Password ="DDD", 
     DateOfBirth = "", 
     Gender ="", 
     AwardID =""}, 

    new _Student { StudentNumber="CE52603-2", 
     FirstName ="BBB", 
     LastName = "DDD" , 
     UserName = "FFF", 
     Password ="GGG", 
     DateOfBirth = "", 
     Gender = "", 
     AwardID =""}, 

    new _Student { StudentNumber="CE52302-2", 
     FirstName ="GGG", 
     LastName = "HHH", 
     UserName = "KKK", 
     Password ="LLL", 
     DateOfBirth = "", 
     Gender ="", 
     AwardID =""} 

     //return st; 
    }; 

public static void login(string username, string password) 
{ 
    var stquery = (from s in st 
        where s.UserName.Equals(username) && 
        s.Password.Equals(password) 
        select s).FirstOrDefault(); 

    if (stquery == null) 
    { 
     //Login failded redirect to registration 
     System.Web.HttpContext.Current.Response.Redirect("registration.aspx"); 

    } 
    else 
    { 
     //Login successful redirect to manager 
     System.Web.HttpContext.Current.Response.Redirect("manager.aspx"); 
    } 

    } 
} 

然後,這是我的class2.cs

class2.cs //getters and setters 

    public class Person 
    { 
     // Member Variables 

     public int Id { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string DateOfBirth { get; set; } 
     public string Gender { get; set; } 
    } 

    public class _Student : Person //student inherits from Person class 
    { 
     public string StudentNumber { get; set; } 
     public DateTime EnrollmentDate { get; set; } 
     public string UserName { get; set; } 
     public string Password { get; set; } 
     public string AwardID { get; set; } 
     public string[] modules { get; set; } 


    } 

而且最後這裏是我如何要求在login.cs登錄方法

public partial class login : System.Web.UI.Page 
{ 


protected void Page_Load(object sender, EventArgs e) 
{ 


} 
protected void ButtonLogin_Click(object sender, EventArgs e) 
{ 

    Class3.login(TextBoxLoginUser.Text, TextBoxLoginPass.Text); 




} 
} 

希望它可以幫助人在那裏:)。

+0

仍然不理解這些嵌套類,它們是公開的,所以嵌套是完全無用的。 –