我坚持这一点,我真的要在几分钟内把我的头撞到墙上我有一个日志页面,用户在其中输入用户名和密码,并在他们按下此按钮时单击登录,调用一个函数来获取所有用户详细信息,即firstname surname Email AccountType Examtaken 等函数中我试图设置“获取;设置;” 属性,所以我可以在主页上使用它们,但由于某些愚蠢的原因,我不知道它不起作用!下面你会看到当用户点击登录时调用的方法
public class ExamMethods
{
public int UserID { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Email { get; set; }
public int AccountType { get; set; }
public bool ExamTaken { get; set; }
private enum Datafield
{
UserID,
FirstName,
Surname,
Email,
AccountType,
ExamTaken,
}
public Hashtable CheckLogin(Hashtable Usercredentials)
{
try
{
SqlConnection Connection = new SQLAccess().CreateConnection();
SqlCommand Command = new SqlCommand("GetUserDetails", Connection);
Command.CommandType = System.Data.CommandType.StoredProcedure;
foreach (DictionaryEntry SpParameter in Usercredentials)
{
Command.Parameters.Add(new SqlParameter(SpParameter.Key.ToString(), SpParameter.Value.ToString()));
}
SqlDataReader da = Command.ExecuteReader();
while (da.Read())
{
Details.Add("UserID", da["UserID"]);
UserID = (da.IsDBNull((int)Datafield.UserID)) ? 0 : da.GetInt32((int)Datafield.UserID);
Details.Add("FirstName", da["FirstName"]);
FirstName = (da.IsDBNull((int)Datafield.FirstName)) ? "" : da.GetString((int)Datafield.FirstName);
Details.Add("Surname", da["Surname"]);
Surname = (da.IsDBNull((int)Datafield.Surname)) ? "" : da.GetString((int)Datafield.Surname);
//Details.Add("AccountType", da["AccountType"]);
//AccountType = (da.IsDBNull((int)Datafield.AccountType)) ? 0 : da.GetInt32((int)Datafield.AccountType);
//Details.Add("ExamTaken", da["ExamTaken"]);
//ExamTaken = (da.IsDBNull((int)Datafield.ExamTaken)) ? false : da.GetBoolean((int)Datafield.ExamTaken);
}
Connection.Close();
da.Close();
return Details;
}
catch
{
Console.WriteLine("Error Checking Login Details");
return Details;
}
}
}
正如您在上面的 while(da.read) 中看到的那样,我在调试时将值分配给哈希表和 get set 方法,我可以看到值进入!我 100% 这个值不是 null 或空的
然后代码返回登录页面,如果一切正常,则返回登录页面,然后 response.redirect 到用户可以参加考试的主页,但是在 home.aspx 的页面加载中,我有一个我想要的标签popualte 与用户名,所以我引用了 ExamMethods 类的 get 属性,但它为空?这怎么可能?我错过了什么?这是后面 home.aspx 页面的代码
public partial class Home : System.Web.UI.Page
{
Hashtable UpdateUser = new Hashtable();
protected void Page_Load(object sender, EventArgs e)
{
Methods.ExamMethods obj_UserDetails = new Methods.ExamMethods();
if (Request.QueryString["uid"] == null)
{
Response.Redirect("Login.aspx");
}
else
lblUserName.Text = obj_UserDetails.FirstName;
}
是不是因为我从登录页面到主页使用了reponse.redirect,所以get set方法什么都不是?