【问题标题】:Check length of String passed from Model检查从模型传递的字符串的长度
【发布时间】:2017-08-24 07:51:02
【问题描述】:

我在 ASP.NET MVC 中工作,我在检查从我的模型传递的字符串是否为空时遇到了一些问题。

我有一个<p>-标签,在<div> 内,如下所示:

<div class="category-text">
    <p class="sidebar-text">@Html.Raw(Model.Text)</p>
</div>

在某些情况下会保存文本,而在某些情况下不会,所以如果文本为空,我希望包含此 &lt;p&gt;-tag 的整个 div 不显示。我为此编写了一个 jQuery 函数:

if ($(".sidebar-text").text().length) {
    $(".category-text").show();
}

这个功能似乎在起作用。例如,如果我将“asd”硬编码到&lt;p&gt;-tag 中并将其记录到控制台中,它会给我“3”,这就是我期望它的工作方式。

我的问题是使用@Html.Raw(Model.Text) 总是返回0,这使得整个category-text div 不显示。我知道 Model.Text 具有价值,并且在我看来在其他地方使用 @Html.Raw(Model.Text) 证明文本实际上在 Model.Text-object 中。

我错过了什么?

【问题讨论】:

    标签: c# jquery razor


    【解决方案1】:

    if 语句包围&lt;div&gt;,如下所示:

    @if(!String.IsNullOrEmpty(Model.Text))
    {
        <div class="category-text">
            <p class="sidebar-text">@Html.Raw(Model.Text)</p>
        </div>
    }
    

    这将阻止整个 &lt;div&gt; 呈现给它在 DOM 中不可用的响应。

    但是,如果您需要在 DOM 中存在但不可见的 &lt;div&gt;,由于段落为空,您可以在服务器上设置 CSS 可见性属性。例如

    <style>
        .invisible { visibility: hidden; }
    </style>
    

    那么&lt;div&gt; 的 HTML 将如下所示:

    <div class="category-text @(String.IsNullOrEmpty(Model.Text) ? String.Empty : invisible)">
        <p class="sidebar-text">@Html.Raw(Model.Text)</p>
    </div>
    

    【讨论】:

    • 错别字,改成(Model.Text) :)
    • 太棒了。我只需要显示 div,而且效果很好。谢谢!
    猜你喜欢
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    相关资源
    最近更新 更多