問題タブ [dotliquid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - DotLiquid/Liquidの辞書へのアクセス
DotLiquidテンプレートエンジンを使用していて、テンプレートの辞書値にアクセスしようとしています。私はこのドロップをテンプレートに渡しました:
テンプレートでは、myKey値にアクセスできません
{{ this.MyDictionary.myKey }}
。
{{ this.MyDictionary['myKey'] }}
c# - DotLiquid で再帰ループを作成する
DotLiquidにこのループがあります:
すべてsubpage
のオブジェクトにはPages
、リスト内の他のサブページを持つプロパティがあります (最初のPage
オブジェクトのように)。
完全なツリーを作成するために、これらのサブページに対して再帰的な反復を作成するにはどうすればよいですか?
c# - DotLiquid の独自のタグで現在のスコープにアクセスする
DotLiquid テンプレートで IEnumerable をループすると
メンバーを直接レンダリングできますblock.Structure
が、自分のタグクラスでこの構造オブジェクトにアクセスする方法がわかりませんRenderObject
:
c# - Nancy Web ソリューションの DotLiquid コレクションを使用した Mono 3.2 の一貫性のない動作
Liquid テンプレートをレンダリングする際に、特定の状況下でアプリケーションに奇妙に一貫性のない結果が表示されます。記録のために、私は Ubuntu 12.10、Mono 3.2.3、および最新バージョンの Dotliquid (1.7) を使用しています。Dotliquid にいくつかの小さな変更を加えましたが、その概要とその理由を以下に示します。
DotLiquidViewEngine に、次のものを挿入しました。
このわずかな変更のポイントは、{{ model.myobject.property }} と入力する必要がなく、代わりに {{ myobject.property }} を使用できるようにすることです。
ResponseModel オブジェクトはディクショナリです。ハッピー パスから少し逸脱し始めている部分は、DotLiquid.Drop から継承し、IDictionary も実装するオブジェクトを作成したことです。このようにして、3 つの異なる方法でオブジェクトのリストにアクセスできます。
(このジェネリック コレクション コードを下に貼り付けます。)
私が見ている問題はこれです: 私が提供したコードは、Windows 環境で毎回動作します。Mono の最新バージョンを実行している Linux ホスティング環境では、このコードが機能する場合と機能しない場合があります。
私が見つけることができる唯一のパターンは、Apache が再起動されると、最初のページ要求で何が起こっても (リストが正しくレンダリングされるかどうかに関係なく)、Apache を再起動するまで、後続のすべてのページ要求でこの動作が発生するということです。失敗した場合、失敗するのは上記の最初の 2 つのアプローチだけであり、3 番目のアプローチは常に機能します。失敗すると、次のエラーが表示されます。
Ubuntu または CentOS の実行に関係なく、Mono で同じ一貫性のない結果が得られます。コードをデバッグ モードとリリース モードで実行してみました。Visual Studio と Xamarin でコンパイルして、役立つかどうかを確認しました。何をしても同じ結果。
関連する可能性のある他の唯一の情報は、ソリューションが Nancy で実行され、IoC に StructureMap を使用していることです。これらは両方とも Nuget の最新バージョンにあります。
私はこれにかなりこだわっているので、どんな洞察も非常に高く評価されています。以下は、Drop を実装するジェネリック コレクションのコードです。
上記のクラスを、この投稿で提供されている解決策で同じ結果に置き換えてみました: Dictionaries and DotLiquid
c# - DotLiquid がテンプレートを解析しない
またはさらに良いことに...私が正しくしていないことがあります:s
とにかく、これは簡単です、私はこのクラスを持っています
そして私はこのテンプレートを持っています:
{{Bedrooms}}Br in {{AreaName}} for only {{Price}}.
を呼び出すParseTemplate(somePath);
と、得られる結果は次のとおりBr in for only
です。
私は何を間違っていますか?
注: AdModel で宣言されていない、ここで言及されているプロパティは、Ad では Public として宣言されているため、(理論的には) AdModel 内からそれらにアクセスする際に問題は発生しないはずです。
liquid - (ドット)Liquid: ビュー モデル プロパティの割り当てまたはビュー モデル メソッドの呼び出しは可能ですか?
これは、DotLiquid ライブラリを使用した Liquid の安全性に関する質問です。
ビューモデルが次のようなものであるとします (疑似コード):
...そして MyViewModel オブジェクトが Liquid テンプレートに渡され、ここで MyField がテンプレート内からアクセスできるように設定されます (テンプレートがそのコンテンツを読み取れるようにするため)。
- MyField を割り当てることはできますか? つまり、テンプレートはビュー モデルの内容を変更できますか?
- MyMethod() を呼び出すことはできますか? レンダリング時にテンプレートからアクセスできるように構成された「MyMethod」メンバーはありません。
- テンプレートをレンダリングするときに「MyMethod」メンバーにアクセスできるように構成するとどうなりますか? Liquid テンプレートからのメソッド呼び出しは可能ですか?
私の仮定では、答えはすべての質問に対してノーですが、確認したいと思います。
ありがとうございました。
c# - ドットリキッド拡張エラー
私は非常に基本的なテンプレートを持っています:
Body.tpl はもっと複雑ですが、基本的に次の 2 つのセクションがあります。
C# コードは次のとおりです。
しかし、テンプレートを解析しようとすると、エラーが発生します:
しかし、私が見る限り、'extends' はテンプレートの最初のタグです。
どんな助けでも大歓迎です。
前もって感謝します テリー
c# - DotLiquid テンプレート エンジンで Enum を処理する
私は現在、電子メールを送信できるようにする必要がある Web プロジェクトに取り組んでいます。テンプレート エンジンに DotLiquid を使用し始めましたが、特定の問題が見つかりました。最大の問題は、enum を処理できないように見えることです。
という感じで型を「Safe」として登録しようとしたのTemplate.RegisterSafeType(typeof(Gender), new string[] { "Male", "Female" });
ですが、うまくいかないようです。せいぜい、スローされる例外はありませんが、期待される結果は空です。
上記のどれも何も返すことができませんでした。列挙型の文字列または int 表現に満足していますが、今のところ何もありません。この問題の解決策を見つけた人はいますか?
後で混乱する可能性があるため、Drop オブジェクトで列挙型を自分で「変換」することは避けたいと思います。
ありがとうございました。
c# - SafeTypes のブロックが機能しない場合
私は現在プロジェクトに取り組んでおり、テンプレート自体で列挙型を使用する必要がある特定のニーズがあります。次のクラスを作成して、DotLiquid テンプレート内の列挙型にアクセスできるようにしました。
Register メソッドは IoC コンテナーによって呼び出され、「LiquidComponent」は実際に問題なく登録されています。ただし、テンプレートが次のポイントに達すると、常に else ブロックに分類され、その理由がわかりません。エラーはありません。単純に間違った結果です。
私はこれを解決する考えがありません。その時点で {{ Model.PaymentMethod }} は文字列として解釈されると思いましたが、そうではありません。列挙型自体のみを持つようにローカライズを削除しましたが、動作は同じです (列挙型がローカライズされていないという事実があります)。この場合、等価性をテストするために新しいブロックを作成することは避けたいと思います。ネットで調べましたが、答えがないようです。
公式フォーラムにも質問を投稿しました: https://groups.google.com/forum/#!topic/dotliquid/hU4hnOYjCnY