在asp.net外面使用RazorEngine当我尝试使用@Html.Raw("html string here")以下方法编写原始html时遇到此错误:
无法编译模板.当前上下文中不存在名称"Html"
你能帮助我吗?
谢谢!
当我需要从Web服务器上的目录中删除一些图像文件时,我有一些代码可以正常工作:
Dim ImageURL As String = dsImages.Tables(0).Rows(iImgRow).Item("ImageURL")
Dim physicalName = Server.MapPath(ImageURL)
oUpload.DeleteFileFromServer(physicalName, iAdid, iImgID)
Run Code Online (Sandbox Code Playgroud)
..但是当以设定的时间间隔在单独的线程中运行的维护任务确定需要删除上述文件时,我遇到了问题:
Dim ImageURL As String = dsImage.Tables(0).Rows(i - 1).Item("ImageURL")
Dim iImgID As Integer = dsImage.Tables(0).Rows(i - 1).Item("ImageId")
Dim physicalName As String = HttpContext.Current.Server.MapPath(ImageURL)
oUpload.DeleteFileFromServer(physicalName, iAdID, iImgID)
Run Code Online (Sandbox Code Playgroud)
在后一种情况下,HttpContext.Current.Server.MapPath(ImageURL)的值为Nothing.
有没有办法获得这种情况的完整路径?
我想在RazorEngine中使用以下Razor模板:
@{
Layout = null;
}
@Html.Raw(MyNamespace.MyClass.SomePropertyWithHtml)
Run Code Online (Sandbox Code Playgroud)
当我调用它时,我得到2个错误 - 一个抱怨它无法处理布局,另一个抱怨它不知道如何处理Html帮助器.
还有其他问题和答案在这里建议这可能在v3中,我正在使用NuGet上的当前包 - v3.0.8 - 但目前尚不清楚这是如何完成的.目前我这样称呼它:
string html = RazorEngine.Razor.Parse(File.ReadAllText(path));
Run Code Online (Sandbox Code Playgroud)
其他答案建议首先使用Razor.SetBaseTemplate,它不出现在当前源代码或git上的3.0分支中.望着代码我看到代码引用布局和路段,但出现的布局代码依赖于解决由名称的模板,而我正在试图做的甚至没有需要解决的模板 - 我只需要它来应付使用Layout = null.该代码还包含似乎提供在Web项目中的一个的HtmlHelper MvcTemplateBase - 但它在该项目中唯一的类,而不是在网络或核心项目的任何地方引用.
这个类似的问题: RazorEngine与@Html有关
只需链接到主页,您可以在那里找到更多信息 - 主页只是描述项目的简短句子.
那么,如何用RazorEngine v3.0解析上面的Razor视图?
我正在尝试使用RazorGenerator作为电子邮件模板引擎.我想用数据模型,组装正确的部分视图集,并返回我可以通过电子邮件发送的HTML.
编辑:除了这个工作流程,任何解决方案都需要作为.cshtml文件编辑,并能够编译成一个DLL.由于各种原因,部署cshtml文件本身是不切实际的 - 如果我们无法将所有剃刀视图嵌入到单个文件中,那么我们就无法使用该建议.因此RazorGenerator.
到目前为止,我已经计算出它的每个部分,除了部分.当我尝试在模板文件中使用@ Html.Partial()时,我得到:The name 'Html' does not exist in the current context.
基于这个答案,我知道@Html默认情况下它不是Razor的一部分,关于如何HtmlHelper在控制器中创建一个答案.但是,我需要在模板中创建一个模板,这个模板没有ControllerContext我需要遵循这些示例的模板.
我也尝试使用@Include,但RazorGenerator模板似乎不支持. 编辑:我也尝试创建一个继承自TemplateBase<>并复制了所有功能的新类RazorTemplateBase,但我得到NullReferenceException了解决方案@Include.
所以,我的主要问题是:是否有更好的方法将另一个Razor文件(带模型)包含到我的文件中?
其次,如果没有更好的方法,我怎样才能创建HtmlHelper?
编辑赏金:重申一下,在可接受的答案中我需要的四件事是:
.cshtml使用标准编辑器编辑文件的能力(不"将其存储为字符串"等)@Includes或@Html.Partial(如果它们工作,它们中的任何一个都是完全可以接受的)我目前可以得到其中三种工作的大部分组合,但我不能同时获得所有四种.我愿意接受新的库,取代RazorGenerator,或抛弃我已经拥有的任何部分,只要结果能够按需要运行.
我在视图的同一子文件夹中有两个cshtml文件.其中一个模板意味着包含另一个模板.我试图完成如下:
主要模板:
<html>
<head></head>
<body>
@Html.Partial("~/Views/Pdfs/Header");
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
无法编译模板.当前上下文中不存在名称"Html".
我还应该做些什么呢?
使用Razor页面作为邮件模板我试图使用显示邮件(Html内容)的内容@Html.Raw(Model.Content).
无论何时我运行代码,我都会收到此错误:html does not exist in current context.
我@Html.Raw("<strong>Bold!</strong>")在另一个剃刀页面上尝试了这个以验证RazorEngine已安装并且它显示完美且没有错误.
razor ×4
razorengine ×3
asp.net-mvc ×2
asp.net ×1
c# ×1
html ×1
html-helper ×1
httpcontext ×1
layout ×1
vb.net ×1