【发布时间】:2018-05-29 16:16:57
【问题描述】:
我想在不同的会话中存储多个值,因为我在 VB 代码中有多个 If 条件可以正常工作
If roleRow.Item("Code").ToString() = "101" Then 'Admin Settings
If roleRow.Item("Active") = True Then Session("101") = True Else Session("101") = False
End If
If roleRow.Item("Code").ToString() = "102" Then 'Summaries / Reports
If roleRow.Item("Active") = True Then Session("102") = True Else Session("102") = False
End If
If roleRow.Item("Code").ToString() = "103" Then 'Invoices List
If roleRow.Item("Active") = True Then Session("103") = True Else Session("103") = False
End If
但相同的代码结构在 C# 中不起作用。
它只评估第一个 IF 条件和其余条件,它显示与第一个 IF 条件相同的值。有什么建议可以解决这个问题吗?
private void UserPermissions_Read()
{
BOL.Master.UsersRoles aDA = new BOL.Master.UsersRoles();
DAL.Master.UsersRoles.UsersRolesDataTable aDT = new
DAL.Master.UsersRoles.UsersRolesDataTable();
aDT = aDA.Read("1", 1, "", 1, "", "", "", "");
DataRow dRow;
if (aDT.Rows.Count > 0)
{
dRow = aDT.Rows[0];
if (dRow["Code"].ToString() == "101" && (Boolean)dRow["Active"] == true)
{
Session["101"] = true;
}
else
{
Session["101"] = false;
}
if (dRow["Code"].ToString() == "102" && (Boolean)dRow["Active"] == true)
{
Session["102"] = true;
}
else
{
Session["102"] = false;
}
}
else
{
Session["101"] = false;
Session["102"] = false;
Session["103"] = false;
}
}
【问题讨论】:
-
“和其他条件它显示与第一个 IF 条件相同的值” - 我不清楚你的意思是什么。调试时具体发生了什么?您的运行时值是什么?您对比较有何期望? C# 中的
if结构工作得很好,不清楚你在这里期待什么。 -
"但是相同的代码结构在 C# 中不起作用" 不,你没有相同的结构。如果 VB 代码的格式“正确”,那可能会更明显
-
当我调试......对于这一行(第一行) dRow["Code"].ToString() == "104" 它工作正常......但是当我去调试时到下一个或第三个条件...它显示相同的值 104 并且条件保持为 False .....尽管它应该是 True
-
您的 VB 代码有嵌套的 if 语句,而您的 C# 代码没有。所以它是一个不同的结构。
-
@MalikUsman:对于同一记录,如何永远满足多个条件?
dRow["Code"].ToString()不能同时是"104"和"105"。完全不清楚你在描述什么。
标签: c# asp.net visual-studio if-statement switch-statement