問題タブ [razorengine]

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.

0 投票する
1 に答える
2177 参照

layout - RazorEngine - レイアウトと Html.Raw を使用する

RazorEngineで次の Razor テンプレートを使用したいと思います。

私がそれを呼び出すと、2 つのエラーが発生します。

v3 でこれが可能であることを示唆する他の質問と回答がここにあり、NuGet で現在のパッケージ (v3.0.8) を使用していますが、これがどのように行われるかは明確ではありません。現在、私はそれを次のように呼んでいます:

他の回答では、最初に Razor.SetBaseTemplate を使用することを提案していますが、これは現在のソースまたは git の 3.0 ブランチには表示されません。コードを見ると、コードがレイアウトとセクションを参照していることがわかりますが、レイアウト コードはテンプレートを名前で解決することに依存しているように見えますが、私がやろうとしているのはテンプレートを解決する必要さえありません。対処するために必要なだけです。 Layout = null で。このコードには、Web プロジェクトで HtmlHelper を提供しているように見える MvcTemplateBase も含まれていますが、これはそのプロジェクトで唯一のクラスであり、Web または Core プロジェクトのどこからも参照されていません。

この同様の質問: @Html に関する RazorEngine の問題

ホームページへのリンクだけで、そこで詳細を確認できます。ホームページは、プロジェクトを説明する短い文です。

では、上記の Razor ビューを RazorEngine v3.0 で解析するにはどうすればよいでしょうか?

0 投票する
1 に答える
2374 参照

.net - RazorEngineを使用してモデルを反復する

ElasticObject(http://elasticobject.codeplex.com/)を使用して動的オブジェクトを作成し、テンプレートを置き換えるためにRazorEngineにフィードします。

ElasticObjectが動的オブジェクトに変換するXMLの構造は次のとおりです。

Contact.UserFirstNameなどのデータにアクセスする方法を理解しようとしています

以下を使用して、Bookノードの属性にうまくアクセスできます。

RazorEngineを使用してモデルを反復処理する方法がわかりません。

私は次のことを試しました:

あなたが与えることができるどんな助けでも大いに感謝されるでしょう。

0 投票する
4 に答える
19311 参照

c# - RazorEngine レイアウト

Razor エンジンhttps://github.com/Antaris/RazorEngineを使用して、メール テンプレートの本文を解析しています。レイアウトを定義して他の .cshtml ファイルを含めることはできますか? たとえば、共通のヘッダーとフッターです。

0 投票する
3 に答える
1970 参照

templating - RazorEngine には MVC3 をインストールする必要がありますか?

MVC2 を使用する Web プロジェクトに取り組んでいます。私はRazorEngineを使って電子メールのテンプレートを作成することにしました。これは、MVC2 プロジェクトを使用してプロトタイプを作成していたときに問題なく動作するように見えたので、RazorEngine が電子メール テンプレート ソリューションで問題なく動作すると想定しました。当時私が忘れていたのは、ローカルの開発マシンに実際に MVC3 がインストールされていたことです。

プロジェクトをプレテスト サーバーにデプロイした後、アプリケーションが RazorEngine で何かをしようとすると、ログに次のエラーが表示されます。

ファイルまたはアセンブリ 'System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。

システムは、指定されたファイルを見つけることができません。

ファイル名: 'System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

RazorEngine.Compilation.DefaultCompilerServiceFactory.CreateCompilerService (言語言語) で

RazorEngine.Templating.TemplateService.CreateTemplateType (文字列 razorTemplate、型 modelType) で

RazorEngine.Templating.TemplateService.CreateTemplate[T] (StringrazorTemplate、T モデル) で

RazorEngine.Templating.TemplateService.Parse[T] (文字列 razorTemplate、T モデル) で

RazorEngine.Razor.Parse [T] (文字列 razorTemplate、T モデル) で

System.Dynamic.UpdateDelegates.UpdateAndExecute3 [T0、T1、T2、TRet] (CallSite サイト、T0 arg0、T1 arg1、T2 arg2) で

Persistence.Utility.RazorEngineHelper.Parse (文字列 templateName、オブジェクト モデル) で ...

「System.Web.Razor」が見つからないという事実は、この DLL がデプロイされたサーバーに存在しないことを意味します。展開サーバーとローカル開発マシンの唯一の違いは、展開サーバーに MVC3 がインストールされていないことですが、展開サーバーは通常私が制御するものではないため、間違っている可能性があります。それに関する多くの情報。この特定のアプリケーションをホストすることを意図しているため、このアプリケーションのこのサーバーへの以前の展開がありました。RazorEngine を依存関係としてデプロイするのはこれが初めてです。

0 投票する
1 に答える
2826 参照

c# - テンプレートの RazorEngine 拡張メソッド

Razor エンジンを使用しています: https://github.com/Antaris/RazorEngine

モデルを動的に作成しています。テンプレートに拡張メソッドを含めようとしていますが、拡張クラスを認識する必要があります。「 'string' には 'ToUpperFirstLetter' の定義が含まれていません」というエラー メッセージが表示されます。

モデル作成

テンプレート

拡張クラス

かみそりの解析

編集

また、Dynamic ExpandoObject で拡張メソッドを作成したいと考えていました。モデル内に値が存在するかどうかを確認します。「 System.Dynamic.ExpandoObject' には 'HasValue' の定義が含まれていません」というエラー メッセージが表示されます。

拡張クラス

延長利用

編集 2

以下は機能し、拡張メソッドに入ります

動的モデルは依然として例外をスローします - RuntimeBinderException: 'System.Dynamic.ExpandoObject' には 'HasValue' の定義が含まれていません

0 投票する
1 に答える
283 参照

.net - Monov2.10でRazorEnginev3を使用する

Monov2.10でRazorEnginev3を使用する方法はありますか?

テンプレートを解析しようとすると、次のエラーが発生します。

0 投票する
4 に答える
3941 参照

razorengine - RazorEngineのメモリ使用量

メールを作成して送信するためのWindowsサービスを作成しました。RazorEngineを使用してメールテンプレートを解析しています。モデルを作成するために動的ExpandoObjectを使用しています。

私の問題は、各電子メールが作成されて送信されるときにメモリが増加しているが、解放されないことです。Antsメモリプロファイラーを使用してサービスのプロファイリングを行いました(これまで使用したことはありません)が、次の結果が表示されます。

Razorエンジンを使用

Razor.Parse(text、model)を使用して200通の電子メールを解析する

ジェネレーション1:12.9kb

ジェネレーション2:15.88mb

ラージオブジェクトヒープ:290.9kb

.NETに割り当てられた未使用のメモリ:3.375mb

管理されていない:69.51mb

メモリフラグメントの総数:197

かみそりエンジンなし

解析されていないテキストを200通の電子メールで返します。

ジェネレーション1:13.87kb

ジェネレーション2:3.798mb

ラージオブジェクトヒープ:95.58kb

.NETに割り当てられた未使用のメモリ:4.583mb

管理されていない:44.58mb

メモリフラグメントの総数:7

Razorの最大の第2世代インスタンスは次のとおりです。

System.Reflection.Emit __FixUpData []-2,447,640ライブバイト、3,138インスタンス

オブジェクトがリリースされず、ジェネレーション2が成長している理由を誰かが知っていますか?テンプレートを解析するたびにRazorEngineの新しいインスタンスを作成する方法はありますか?テンプレートが終了すると、テンプレートは参照されず、GCに移動します。

テンプレートを解析するたびにテンプレートサービスの新しいインスタンスを作成しようとしましたが、これは違いを生みませんでした

0 投票する
3 に答える
3118 参照

c# - RazorEngine とレイアウトでの TemplateCompilationError

私の小さなプロジェクトで RazorEngine を使用しようとしましたが、テンプレート レイアウトを使用しようとすると、このエラーを回避できません。

テンプレートをコンパイルできません。'object' には 'Description' の定義が含まれておらず、タイプ 'object' の最初の引数を受け入れる拡張メソッド 'Description' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)

私のセットアップ: 次のようなテンプレート レイアウトがあります。

次に、次のようなページ テンプレートを作成します。

これは、これを試して理解するために使用しているテスト Main 関数です。

私が見逃しているものはありますか?

更新:動的モデル オブジェクトを説明プロパティを持つ POCO に置き換えると機能します。型付きバージョンの Parse も試しました

動的

ExpandoObject、およびIDictionary<string, object>しかし、それらはすべて同じエラーがあります。

更新: Github でこのプロジェクトを見つけたので、何とか機能するようです: https://github.com/mikoskinen/graze/blob/master/src/core/Graze.cs#L174

0 投票する
3 に答える
12406 参照

c# - RazorEngineはコンパイルされたテンプレートをキャッシュ解除します

現在、テンプレート化された電子メール(数千)を送信するバックグラウンドプロセスの一部としてRazorEnginev2.1を使用しています。処理を高速化するために、テンプレートはmd5の合計を名前としてコンパイルされます。これにより、テンプレートが変更されたときに再コンパイルされ、テンプレートを使用するすべての電子メールで同じコンパイル済みテンプレートを使用できるようになります。コンパイルされたテンプレートの名前をリストに記録して、いつコンパイルを再度呼び出すかを知ることができます(そして他のいくつかのことを行います)。

問題:非常に長い時間と多くのテンプレート変更の後、これらのキャッシュされたコンパイル済みテンプレートはすべて、に格納されているように見えるため、おそらくまだメモリに残っていることに気付きましたdynamic。この特定のプロセスでは、再起動せずに一度に数か月実行される可能性がありますが、以前のバージョンのテンプレートがすべてまだ残っている場合、これは重大なメモリリークを構成する可能性があります。

質問:古いテンプレートのキャッシュを解除して、テンプレートがぶらぶらしないようにする方法はありdynamicますか?

たとえば、コンパイルされたテンプレートオブジェクトを自分で保持し、それらを使用したいときにRazorEngineに渡すことができた場合、それらをいつ破棄するかを決定でき、メモリリークがなくなります。ただし、RazorEngineがすでにこれを回避する方法を持っている場合は、インターネット上でこの特定の問題への参照をあまり見つけることができないため、それについて知ることも便利です。コンパイルされたテンプレートを使用してメモリ使用量を削減する必要がある理由についてはたくさんありますが、長寿命のアプリケーションに蓄積された大量の未使用のコンパイル済みテンプレートについて何かを見つけるのに苦労しました。

編集:キャッシングがどのように機能するか、そして同じ名前が別のテンプレートで渡された場合、それを再キャッシュして古いものを破棄することについて少し読んだところです。ただし、時間の経過とともに電子メールが追加および削除され、時間の経過とともにすべての古い削除された電子メールが引き続き存在するため(テンプレートの各バージョンのコピーは保存されませんが)、ここでの問題は依然として残ります。

0 投票する
1 に答える
1321 参照

razor - RazorEngine 3.2.0:.cshtmlファイルにRazor名前空間が見つかりません

クラスライブラリプロジェクトRazorEngine3.2.0を使用しています。

次のSO質問に対する次の回答に従うことで、クラスライブラリ関連の問題を解決しました。Razorインテリセンスエラー:機能「拡張メソッド」はISO-2 C#言語仕様の一部ではないため、使用できません。

問題

@inheritsキーワードを使ってみます。ビュークラスの完全修飾名を記述するだけインテリセンスは機能します。継承しようとすると、 RazorEngine-Assemlby全体が解決されていないようです。RazorEngine.Templating.TemplateBase<T>

テンプレートは次のようになります。

実行時に機能します-インテリセンスだけが失敗します。

質問

インテリセンスがRazorEngine-Assemblyを認識するために必要なものは何ですか?