0

我正在使用 Razor 视图引擎在 MVC 应用程序之外生成 HTML(在获胜表单中)

我的大多数 Razor 视图都非常合乎逻辑地工作,但我在显示图像时遇到了问题。

我正在尝试显示从数据库中检索到的 PNG 图像。由于我在一个 winforms 应用程序中,很多我通常使用的辅助函数都没有,所以我试图内联。

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

但是当我使用上面的代码评估此代码以显示图像时,我在这里得到了:

StackOverflow 文章

我从 Razor Renderer Line: 305\t Col: 1\t Error: The name 'WriteAttribute' does not exist in the current context

像这样调用:

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

Razor 引擎是引发错误的原因......到目前为止,我所有其他 HTML 工作正常......

这是 Razor 视图引擎为语句输出的代码(来自错误文本)

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

1

编码:

<img src="@String.Format( "data:image/png;base64,{0}", base64 )" />

src由于属性和方法参数的引号不明显,StackOverflow 没有正确解析Format,我不确定 Razor 引擎是否可以遵循。也许您可以尝试将字符串格式移动到赋值并引用该变量,而不是像那样调用内联方法。它至少可以揭示更多关于这个问题的信息。

于 2014-03-03T21:16:48.637 回答