0

Razor View Engine を使用して、MVC アプリの外部で HTML を生成しています (win フォームで)

Razor ビューのほとんどはかなり論理的に機能しますが、画像の表示に問題があります。

データベースから取得した PNG 画像を表示しようとしています。私はwinformsアプリを使用しているため、通常使用する多くのヘルパー関数が存在しないため、インラインで実行しようとしています.

 string base64 = Convert.ToBase64String( @Context.Model.ETA640StudentProfileVM[ currentRecord ].ImageObj );
imageBytes);
<img src="@String.Format( "data:image/png;base64,{0}", base64 )" />

しかし、このコードを評価して、上記のコードを使用して画像を表示すると、次のようになりました。

スタックオーバーフローの記事

Razor Renderer 行からこのエラーが発生します: 305\t Col: 1\t エラー: The name 'WriteAttribute' does not exist in the current context

次のように呼び出されます:

return RenderTemplate(sourceCodeReader, referencedAssemblies, context, null);

Razorエンジンがエラーをスローしているものです...他のすべてのHTMLはこれまでのところ正常に動作しています...

これは、Razor View Engine がステートメントに対して出力しているコードです (エラー テキストから)。

WriteLiteral("  <img");
WriteAttribute("src", Tuple.Create(" src=\"", 6855),
Tuple.Create("\"", 6915) , Tuple.Create(Tuple.Create("", 6861),
Tuple.Create<System.Object, System.Int32>(String.Format(
@"data:image/png;base64,{0}", base64 ) , 6861), false) );

WriteLiteral(" />\r\n");

ご覧のとおり、WriteAttribute は WriteLiteral ステートメントの引用符内にあります...これは明らかに間違っているようです。

そのペアの行が Razor エンジンを吐く原因になる理由を誰か知っていますか?

Razor エンジンを使用して HTML を生成し、データベースから PNG を表示し、MVC アプリの外部で動作させた人はいますか?

(PS私は、この同じエラーにもっと悪い観点からアプローチした別の質問がありました。その質問は削除されました)

編集:フォローしている人にとって、問題はイメージタグのパスにある変数の解析に直接関連しているようです..たとえば、これは完全に機能します.

<img src="D:\Project Files\EFolderReportGenerator3G\WinForm\EFolderReportGenerator3G\bin\Debug\Tmp.png" border="0" height="155" />

しかし、これは恐ろしく死にます(二重スラッシュと @"" 文字列リテラルを使用して '\' 文字を処理する方法の両方)

   @string path = "D:\\Project Files\\EFolderReportGenerator3G\\WinForm\\EFolderReportGenerator3G\\bin\\Debug\\Tmp.png";
   <img src="@path" border="0" height="155" />

今、私は相対パスの問題を解決しようとしているので、私のソリューションは移植可能です。

4

1 に答える 1