【问题标题】:Contains Method doesnt work包含方法不起作用
【发布时间】:2015-04-25 21:37:36
【问题描述】:

使用下面的代码,我想比较UserType,如果是“学生”我想重定向到学生资料等。

但它总是到达最后一个else 语句并写入错误。

returnQuery 方法运行良好,因为它返回值“Student”。

String emailID = Session["New"].ToString();
string usertype = returnQuery(
    "select userType from Registration where email = '" + lblEmail.Text + "'");

if (usertype.Contains("Student"))
{         
    Response.Redirect("Profile.aspx?email=" + emailID.ToString());
}
else if (usertype.Contains("Company"))
{ 
    Response.Redirect("CompanyProfile.aspx?email=" + emailID.ToString());
}
else if(usertype.Contains("Admin"))
{
    Response.Redirect("AdminProfile.aspx?email=" + emailID.ToString());
}
else
    Response.Write("Error");

【问题讨论】:

  • 您好,usertype 对于特定电子邮件的值是多少?您说 returnQuery 方法效果很好。请让我们知道这个方法的返回值是什么。谢谢
  • 调试usertype的值。也许它真的没有你要检查的价值。
  • 仅供参考:见SQL Injection
  • 该方法将 Student 返回到 Label,因为配置文件的 userType 是 Student。
  • else Response.Write(usertype);

标签: c# asp.net visual-studio methods compare


【解决方案1】:

如果usertype="Student" 可以使用usertype.Equals("Student"); 来确定变量。 Here 是方法。

【讨论】:

  • 我都试过了,都没有运气,问题很奇怪,当这段代码在 Page_load 中时它可以工作,但是当它在按钮单击的方法中它不起作用....
  • @KamilRipperPantlinowski 这表明您的价值不等于您认为的价值。尝试使用 IDE 的调试器查看值是什么。
【解决方案2】:

我怀疑您正在处理页面生命周期问题。在按钮单击的回发事件处理期间,lblEmail.Text 可能不是您所期望的。

在处理按钮单击事件之前的任何时候验证您没有修改 lblEmail.Text 的内容,并在处理单击事件时验证 lblEmail.Text 的值。

有关页面生命周期的更多信息,请参阅此 MSDN 文章: https://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多