如何解决是否可以在不分配结果的情况下使用条件运算符?
我有一个ASP.Net Core视图,并且在其中尝试缩小显示的文本,我可以使用:
@if (item.Details.Length < 100)
{
<span>@item.Details</span>
}
else
{
<span>@item.Details.Substring(0,99) ...</span>
}
但是后来我想我可以使用条件运算符:
<span>@{item.Details.Length < 100 ? item.Details : item.Details.Substring(0,99);}</span>
我猜这不起作用,原因与不起作用相同:
@if (item.Details.Length < 100)
{
item.Details;
}
else
{
item.Details.Substring(0,99);
}
即语法需要分为html
和cs
部分,但是我可以使用条件运算符在单行代码中分配和显示变量吗?
请不要告诉我所有显示逻辑都应该在ViewModel中完成。我知道这可能是最好的选择,但这不是我要的!
解决方法
当前,您正在尝试使用条件?:表达式作为语句-但这不是语句表达式。但是,它本身是有效的表达。因此,您需要:
- 删除
;
,仅在声明后有效 - 将
{}
(用于块体)更改为()
(用于告诉Razor表达式有多少文本)
<span>@(item.Details.Length < 100 ? item.Details : item.Details.Substring(0,99))</span>
请注意,在C#8中,您可以使用范围运算符来简化操作:
<span>@(item.Details.Length < 100 ? item.Details : item.Details[..99])</span>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。