具有多个或条件的 C# if 语句不返回预期行为
C# if statement with multiple or conditions not returning expected behavior
我有一个 if 语句,它将在以下条件下显示 .CSHTML 布局:
@if ((ViewBag.title != "Log in")
|| (ViewBag.title != "Register")
|| (ViewBag.title != "Confirm Email")
|| (ViewBag.title != "Login Failure")
|| (ViewBag.title != "Forgot your password?")
|| (ViewBag.title != "Forgot Password Confirmation")
|| (ViewBag.title != "Reset password")
|| (ViewBag.title != "Reset password confirmation")
|| (ViewBag.title != "Send")
|| (ViewBag.title != "Verify"))
{ Layout markup }
当我加载 Log in
页面时;但是,会出现布局模板。设置断点显示页面标题正确对应 != "Log in"
条件并且没有抛出异常。可以肯定的是,我根据 this post 中的解决方案检查了我的标记,它似乎没问题......我的语句逻辑不知何故搞砸了,只是看不到它?
你想要&&
,而不是这里的||
。你的逻辑有问题,你的条件永远是真的。
您的条件总是评估为 true
。考虑以下条件:
if(value != "A" || value != "B")
总是true
,因为value
不能同时等于A
和B
。
您要找的是&&
@if ((ViewBag.title != "Log in")
&& (ViewBag.title != "Register")
&& (ViewBag.title != "Confirm Email")
... )
{ Layout markup }
使用 && 运算符,在您当前的状态下,您的条件始终为真..
我有一个 if 语句,它将在以下条件下显示 .CSHTML 布局:
@if ((ViewBag.title != "Log in")
|| (ViewBag.title != "Register")
|| (ViewBag.title != "Confirm Email")
|| (ViewBag.title != "Login Failure")
|| (ViewBag.title != "Forgot your password?")
|| (ViewBag.title != "Forgot Password Confirmation")
|| (ViewBag.title != "Reset password")
|| (ViewBag.title != "Reset password confirmation")
|| (ViewBag.title != "Send")
|| (ViewBag.title != "Verify"))
{ Layout markup }
当我加载 Log in
页面时;但是,会出现布局模板。设置断点显示页面标题正确对应 != "Log in"
条件并且没有抛出异常。可以肯定的是,我根据 this post 中的解决方案检查了我的标记,它似乎没问题......我的语句逻辑不知何故搞砸了,只是看不到它?
你想要&&
,而不是这里的||
。你的逻辑有问题,你的条件永远是真的。
您的条件总是评估为 true
。考虑以下条件:
if(value != "A" || value != "B")
总是true
,因为value
不能同时等于A
和B
。
您要找的是&&
@if ((ViewBag.title != "Log in")
&& (ViewBag.title != "Register")
&& (ViewBag.title != "Confirm Email")
... )
{ Layout markup }
使用 && 运算符,在您当前的状态下,您的条件始终为真..