我正在使用ASP.NET MVC,在我的视图中,如果从我的模型传递的字符串为空,我正在检查一些问题。
我在<p>
内有一个<div>
标记,如下所示:
<div class="category-text">
<p class="sidebar-text">@Html.Raw(Model.Text)</p>
</div>
在某些情况下会保留文本,在某些情况下不会,因此我希望包含此<p>
- 标记的整个div不显示文本为空。我为此写了一个jQuery函数:
if ($(".sidebar-text").text().length) {
$(".category-text").show();
}
此功能似乎有效。如果我将例如硬编码“asd”放入<p>
- 标签并将其记录在控制台中,它会给我“3”,这就是我期望它工作的方式。
我的问题是使用@Html.Raw(Model.Text)
总是返回0,这使整个category-text
div不显示。我知道Model.Text有价值的事实,并且在我的视图中的其他地方使用@Html.Raw(Model.Text)
证明文本实际上在Model.Text
- 对象中。
我错过了什么?
答案 0 :(得分:0)
使用<div>
语句围绕if
,如下所示:
@if(!String.IsNullOrEmpty(Model.Text))
{
<div class="category-text">
<p class="sidebar-text">@Html.Raw(Model.Text)</p>
</div>
}
这将阻止整个<div>
呈现为在DOM中不可用的响应。
但是,如果由于空段落而需要DOM中的<div>
但不可见,则可以在服务器上设置CSS可见性属性。 E.g。
<style>
.invisible { visibility: hidden; }
</style>
然后<div>
的HTML将如下所示:
<div class="category-text @(String.IsNullOrEmpty(Model.Text) ? String.Empty : invisible)">
<p class="sidebar-text">@Html.Raw(Model.Text)</p>
</div>
答案 1 :(得分:0)
如果问题只是显示包含文本的div,如果Model.Text不是Empty或null,那么你可以这样做:
@if(!String.IsNullOrEmpty(Model.Text))
{
<div class="category-text">
<p class="sidebar-text">@Html.Raw(Model.Text)</p>
</div>
}
这简单地解决了您的问题。