检查从模型

时间:2017-08-24 07:51:02

标签: c# jquery razor

我正在使用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 - 对象中。

我错过了什么?

2 个答案:

答案 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>
}

这简单地解决了您的问题。