2

Bootstrapテーマを使用してShapeトレーサーモジュールを介して代替形状を作成しました。このタイプ用に作成したフィールドがいくつかあります。私が作成したカスタムタイプは「BooksForSale」と呼ばれています。次のコードを使用して作成者を表示できます。

<p>@Model.ContentItem.BooksForSale.Author.Value</p>

それはいいです。

ただし、このタイプ(この部分が追加されました)の本文を表示し、最初の150文字のみを表示したかったのです。私は以下を使用しました:

@{ 
    Orchard.ContentManagement.ContentItem contentItem = Model.ContentPart.ContentItem;
    string bodyHtml = Model.Html.ToString();
    var body = new HtmlString(Html.Excerpt(bodyHtml, 500).ToString().Replace(Environment.NewLine, "</p>" + Environment.NewLine + "<p>")); 
}
<div class="post-description">
    <p>@body</p>
</div>
@Html.ItemDisplayLink(T("Read More...").ToString(), contentItem)

作成者が正常に表示しているときに、[続きを読む]行が原因で、これがクラッシュします。

これを「Parts.Common.Summary.cshtml」から取得しました。そこで機能します。

私が欲しいのは、本文の最初の150文字を表示し、「続きを読む...」というリンクを表示して、実際のコンテンツアイテムにリンクすることです。

誰かがここで助けることができるかどうかはわかりませんが、私が尋ねるかもしれないと思いました...

シモン

4

1 に答える 1

1

どのようにクラッシュするかを指定していただければ、本当に助かります。最初のコードサンプルがどのように機能するかを見てModel.ContentPart.ContentItem、単にModel.ContentItem. Modelボディ パーツがあるため、2 行目は Parts.Common.Body.Summary.cshtml で正常に動作します。それをコピーした場所は、別の部分である可能性があります(ただし、私が知るのに十分な詳細を提供していませんでした.作成した代替テンプレートの名前さえ提供していません)。したがって、次のようにボディ部分にキャストする必要があります。

string bodyHtml = contentItem.As<BodyPart>().Html.ToString();
于 2012-12-04T17:54:06.627 に答える