私は現在、document.cshtmlファイルを上書きしてユーザーの現在の場所に基づいて特定のCSSクラスを適用できるWebサイトを作成しています。オーチャードCMSのDocument.cshtmlの代替手段を使用
- Document.cshtml
- ドキュメント-URL-AreaA.cshtml
- ドキュメント-URL-AreaB.cshtml :
- Document.url-AreaC.cshtml
私は、次のようなURLの代替を使用しようとしました
ただし、URLに基づいてDocument.cshtmlを使用するのではなく、Document.cshtmlを使用しているようです。私はこれが意図された目的であることを容易に理解できましたが、上記の機能を実装することが可能かどうかは疑問でした。
私は単純に電流を引っ張るために(文書の)URLの選択肢を使用するのではなく、私は、この分野でいくつかの進歩を遂げている可能性があると考えている、と単純にモデルにフィールドを追加するアップデート
サイトの「エリア」とそのクラスをボディに適用します。 (document.cshtml以内)
@using Orchard.Mvc.Html;
@using Orchard.UI.Resources;
@{
RegisterLink(new LinkEntry {Type = "image/x-icon", ...});
string title = Convert.ToString(Model.Title);
string siteName = Convert.ToString(WorkContext.CurrentSite.SiteName);
//Pull the Area here
string area = Model.DesignatedAreaField;
}
<!DOCTYPE html>
<html lang="en" class="static @Html.ClassForPage()">
<head>
<meta charset="utf-8" />
<title>@Html.Title(title, siteName)</title>
@Display(Model.Head)
</head>
<body class='@area'>
//Body goes here
@Display(Model.Body)
@Display(Model.Tail)
</body>
</html>
私は、これは以前に示唆したものよりも容易に溶液であってもよいと考えています。しかし、私は実際に文書のモデルからアクセスできるフィールドを配置する最も簡単な方法は何だろうと思っています。
ありがとうBertrand。私は上記の「領域」を設定しようといくつかの試みを試みましたが、動作させることができませんでした。私が行方不明になっていることはありますか?ページにコンテンツフィールドを追加し、Layout.FieldNameとして設定しようとしましたが、string = Layoutを使用してアクセスしようとしました。FieldNameにアクセスできませんでした。助言がありますか? –
右、 '@エリア'はそれをカットしません。 Layout.FieldName = "something"を他の場所から設定すると、 '@ Model.FieldName'は動作します。 –