2016-04-07 9 views
1

メッセージのリストを表示するためにブートストラップパネルの折りたたみを使用しています。パネルが展開されると、ユーザーはパネル本体のメッセージを見ることができます。メッセージ本文の最初の行をブートストラップコラプスを使用してメッセージタイトルとして取得する方法

今、私はパネルタイトルを「メッセージを読む」ようにハードコードしましたが、パネルが折りたたまれた状態でパネル本体にあるメッセージの最初の行がパネルのタイトルとして表示されます。私はメッセージ本体をレンダリングするモデルクラスを使用しました。どうすればこれを達成できますか?ここ
は私のコードです:
ビュー:アンカータグ

<a id="Header" class="collapsed" data-toggle="collapse" data-parent="#[email protected]" href="#[email protected]"> 
    Read Message 
</a> 

へのid今すぐ簡単な書き込みのdivは、クラスcollapsedを持っている間anchortagためInnerTextプロパティを設定するためにjqueryの設定し

@{int i = 0;} 
@foreach (var item in Model.MessageHeaderList) 
{ 
<div class="panel-group col-md-8" id="[email protected]"> 
<div class="panel panel-default" id="[email protected]"> 
<div class="panel-heading" id="[email protected]"> 

    <h4 class="panel-title"> 
    <a class="collapsed" data-toggle="collapse" data-parent="#[email protected]" href="#[email protected]"> 
    Read Message 
    </a> 
    </h4> 
    </div> 
    <div id="[email protected]" class="panel-collapse collapse"> 
    <div class="panel-body"> 
    @Html.Raw(item.MessageText) 
    </div> 
    </div> 
    </div> 
    </div> 
} 
i++; 
+0

そして、あなたのモデルに別のプロパティ( '文字列MessageHeading'言う)あなたは'項目を表示し、使用するテキストが含まれています:ビュー自体は、ここで

@item.MessageText.Substring(0, Math.Min(item.MessageText.Length, 50)) 

以下のように全体のコードです.MessageHeading'をパネルタイトルに追加します。 –

+0

@StephenMueckeはい、最初の行だけをどのように表示しますか? 'split()'などを使わなければならないのですか?メッセージ・テキスト全体は、db表の列です。 – sumedha

+0

各行がNewLine文字で区切られていない限り、正確に(テキストを生成しているブラウザを使って)動作させることはできませんが、近似を行い、次にコントローラーで行うことができます - 'MessageHeading = MessageText.Substring 0、50); '最初の50文字を表示する。 –

答えて

2

ちょうどこのように

<div id="[email protected]" class="panel-collapse collapse checkForCollaps"> 
    <div class="panel-body"> 
    @Html.Raw(item.MessageText) 
    </div> 
</div> 

<script> 
if ($(".checkForCollaps").hasClass("collapse")) { 
    $('#Header').text($('.panel-body').text()); 
} 
</script> 

あなたはそうかもしれませんこれはあなたに確実に役立ちます...

+0

あなたの答えのためにありがとうが、これは動作しません。メッセージ全体がタイトルに表示されます – sumedha

+0

あなたは歓迎します.... –

0

すべてのお手伝いをしてくれてありがとう、最後に、@ NathanAが投稿した答えで完璧な解決策を見つけました:here 私は直接渡されるメッセージの部分文字列を取りました。

@{int i = 0;} 
@foreach (var item in Model.MessageHeaderList) 
{ 
    <div class="panel-group col-md-8" id="[email protected]"> 
    <div class="panel panel-default" id="[email protected]"> 
    <div class="panel-heading" id="[email protected]"> 

    <h4 class="panel-title"> 
    <a class="collapsed" data-toggle="collapse" data-parent="#[email protected]" href="#[email protected]"> 
    @item.MessageText.Substring(0, Math.Min(item.MessageText.Length, 50)) 
    </a> 
</h4> 
</div> 
<div id="[email protected]" class="panel-collapse collapse"> 
<div class="panel-body"> 
    @Html.Raw(item.MessageText) 
    </div> 
    </div> 
    </div> 
    </div> 
} 
i++; 
関連する問題