- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有电子邮件项目的应用程序,它公开了一个类来使用 IRazorViewEngine 编译电子邮件模板,并发送它。
但是,这用于几个不同的项目,默认情况下 RazorViewEngine 似乎只在 Views 文件夹中查找相关 Web 项目。这意味着我必须跨项目复制相同的 View 。
我研究过扩展 RazorViewEngine 以修改它查找 View 的位置,但是每个示例都会更改它查找的项目中的哪个文件夹,而不是哪个项目,并且快速查看 RazorViewEngine source 它明确期望应用程序本地路径(即以“~”或“/”开头),阻止了我天真的尝试使用绝对路径或以“../”开头的路径。
有没有办法确保 RazorViewEngine(或子类)检查特定(非动态)项目,而不是调用它的 Web 项目?
应用程序正在使用 .Net Core 1.1,RazorEngine 似乎不支持
最佳答案
我在让 RazorLight 工作时遇到了一些麻烦,所以我认为我最好在此处发布我的解决方案。我使用以下 .csproj 更改将 .cshtml 文件嵌入到程序集中
<ItemGroup>
<EmbeddedResource Include="Emails/*.cshtml" />
<Content Include="Emails/*.cshtml">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
</ItemGroup>
然后,我在与模板相同的文件夹中包含一个空类 (FakeClass),并像这样使用 RazorLight EngineFactory
var engine = EngineFactory.CreateEmbedded(typeof(FakeClass));
return engine.Parse(name, model);
由于不查看源代码我无法理解的原因,CreateEmbedded 需要一个与 View 位于同一位置的类,否则在查找 View 时会出错。
名称只是没有扩展名的模板名称,模型是您的强类型模型。
这种方法的优点是无需弄乱路径字符串,并且可以将所有内容很好地包含在一个项目中。
关于c# - 更改 RazorViewEngine 以在特定项目 (.Net Core) 中查找 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44263642/
App.Web 和 App.Views 是我在一个解决方案中的项目,我将我的 View 放在 App.Views 中并使用 RazorGenerator 进行预编译。 。如果我使用 App.Web 像
我需要将局部 View 呈现为字符串,这样我就可以将 Razor 语法局部 View 呈现为 Asp.net View 。该过程的一部分涉及让 View 引擎找到 View : var engine
我正在考虑实现自定义 RazorViewEngine。基本上我有两个具有相同代码库的站点。不同之处在于它们看起来不同。我想覆盖标准 View 引擎,使 MVC 在两个不同的位置查看其 View 、布局
应用程序是一个带有 RAZOR View 引擎的 MVC3 应用程序。 这里使用的 Controller 是 TestController。 我正在使用嵌套 View 。 基本 View (项目列表)
我正在 ASP.Net MVC5 中工作,我想使用 Javascript 将密码字段与确认密码进行匹配,但由于它使用 Razor View Engine,我无法添加 onmouseleave> 我的文
我确实有一些文本(模板),看起来像“你好@FirstName,欢迎来到@Address”。最初的计划是将这个文本文件放在一个 View 包中,然后通过 Razor 传递它,它会完成这项工作。 现在,我
我正在尝试使用 Razor 实现自定义 View 引擎。目标是如果 View 位于子文件夹中以使用该 View 。 我的 View 引擎源自 RazorViewEngine public class
测试 UI 一直是 TDD 中的困难之一,但我的印象是,使用 MVC3 中的 Razor ViewEngine,可以获得针对特定 View 和输入集呈现的输出。然后,您可以使用字符串函数(例如“Con
我有一个带有电子邮件项目的应用程序,它公开了一个类来使用 IRazorViewEngine 编译电子邮件模板,并发送它。 但是,这用于几个不同的项目,默认情况下 RazorViewEngine 似乎只
我已经子类化 RazorViewEngine所以我可以检查 Request.Browser.IsMobileDevice并在 View 文件名中添加一个特殊的移动标识符以供抓取。但是我无法访问 Req
我只在我的一个 ASP.NET MVC 3 应用程序上使用 RazorViewEngine,并且我在 的 Application_Start 方法中使用以下代码清除了 Web 窗体 View 引擎>G
我想在我的 ASP.NET Core 2.1 Web API 项目中找到我的 cshtml 文件。为此,我使用了这段代码: var httpContext = new DefaultHttpConte
我是一名优秀的程序员,十分优秀!