我正在使用 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 )" />
但是当我使用上面的代码评估此代码以显示图像时,我在这里得到了:
我从 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" />
现在我正在尝试解决相对路径问题,因此我的解决方案是可移植的。