2017-08-24 4 views
0

私はASP.NET MVCで作業しています。私のビューでは、モデルから渡された文字列が空であるかどうかをチェックしています。モデルから渡された文字列の長さを確認します。

私はそうのように、<div>内、<p> -tagを持っている:いくつかのケースではテキストを保持し、いくつかのケースではないので、私はこの<p>を含む全体のdivをしたい

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

サラウンドそうのようなif声明で<div>、:

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

これは、DOMで利用できるように文句を言わない応答にレンダリングから全体<div>を防ぐことができます。

しかしDOMには<div>が必要ですが、表示されない場合は、空の段落があるため、サーバーのCSS可視性プロパティを設定できます。例えば。

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

その後<div>ためのHTMLは次のようになります。問題はModel.Textは、あなたが行うことができます空またはnullでない場合は、単にテキストを含むdiv要素を表示する場合

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

Typo、make(Model.Text) ':) –

+0

素晴らしいです。私はdivを表示しなければならず、うまくいきました。ありがとう! –

0

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

これは単純に問題を解決します。

関連する問題