我正在尝试使用以下方法比较字符串,但它不会进入if循环
newsNs.to('political').emit(payload)
答案 0 :(得分:3)
确保您的价值观正确
您可以考虑检查以确保您的ViewData["value"]
实际上包含您所期望的内容。你在Controller中设置了吗?
尝试在View中添加一个断点,并检查它看起来像下面的语句或Watch窗口:
@{
// Place a breakpoint here
var section = Convert.ToString(ViewData["value"]);
}
检查您的情境
如果您已经处于循环的上下文中,则不应该使用@
字符为if语句添加前缀。
@foreach(var foo in bar){
// Notice that no leading @ is required here
if(...){
}
else if (...){
}
}
明确分隔<text>
代码
如果您不在上下文中且明确想要从代码中识别标记,则可以使用<text>
标记:
@if (Convert.ToString(ViewData["value"]) == "Exit")
{
<text>
<div style="width:100%; border-top:1px solid #999999; padding-top:10px;">
<!-- Your Code Here -->
</div>
</text>
}
合并语句
此外,您的两个语句似乎当前输出相同的代码。您可以考虑使用以下方法将这些合并为单个语句:
@if (new[]{ "Exit", "SessionTimedOut"}.Contains(Convert.ToString(ViewData["value"])){
<div style="width:100%; border-top:1px solid #999999; padding-top:10px;">
<!-- Your code here -->
</div>
}
否则,您可以考虑使用switch
语句更清晰地分隔查询:
@switch(Convert.ToString(ViewData["value"])){
case "Exit":
<!-- Your Markup for Exit Here -->
break;
case "SessionTimedOut":
<!-- Your Markup for SessionTimedOut Here -->
break;
}