我正在使用.cshtml页面。我想通过从Session变量中获取值来有条件地显示一些html。如果我在cshtml页面中使用if else条件它可以工作,但我想用三元运算符替换它。
这是工作代码: -
@if (HttpContext.Current.Session["RequestCount"] != null)
{
if (HttpContext.Current.Session["RequestCount"].ToString() != "0")
{
<li class="nav-item"><a class="nav-link ripple" href="@Url.Action("Images", "Admin")"> <i class="icon-bell-ring" style="position:relative"><em>@HttpContext.Current.Session["RequestCount"].ToString() </em></i><span>Images Request</span> </a> </li>
}
else
{
<li class="nav-item"><a class="nav-link ripple" href="@Url.Action("Images", "Admin")"> <i class="icon-bell-ring"></i> <span>Images Request</span> </a> </li>
}
}
试图使用三元运算符: -
<li class="nav-item"><a class="nav-link ripple" href="@Url.Action("Images","Admin")"> <i class="icon-bell-ring" style="position:relative">@HttpContext.Current.Session["RequestCount"].ToString) != "0" ?<em>@HttpContext.Current.Session["RequestCount"].ToString(): </em></i><span>Images Request</span> </a> </li>
如果要使用三元运算符,则需要执行一些操作。
?
被解释为文本,而不是运算符。所以从这样的事情开始:
@(myCondition ? "a" : "b")
em
标签。
<em>@(/* ternary operator here */)</em>
HttpContext
位)返回一个常规字符串,第二个你试图返回一个不间断的空格(我假设你不希望文字文本输出到页面)。所以将它们都包装在HtmlString
s中。因此,当它们全部组合在一起时,您会得到类似这样的内容(下面是我尝试过的.Net Core Web应用程序中的示例Razor页面,以适应您的需求):
@using Microsoft.AspNetCore.Html
@{
bool isTrue = false;
}
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
<div>
<em>@(isTrue ? new HtmlString("hi") : new HtmlString(" ")) </em>
</div>
</body>
</html>