Ser*_*giy 6 asp.net-mvc razor asp.net-core-mvc
我们正在开发ASP.NET MVC 6项目,并且有必要从文件系统源以外的地方呈现Razor视图(特别是Azure Blob存储,但这并不重要).之前(在MVC 5中)可以创建和注册自定义VirtualPathProvider,它可以从DB或资源DLL中获取视图内容(例如).
似乎MVC 6中的方法已经改变了.有人知道在哪里寻找吗?
UPD:这是我正在寻找的代码示例:
public IActionResult Index()
{
ViewBag.Test = "Hello world!!!";
string htmlContent = "<html><head><title>Test page</title><body>@ViewBag.Test</body></html>";
return GetViewFromString(htmlContent);
}
Run Code Online (Sandbox Code Playgroud)
问题是:如何实现该GetViewFromString功能?
您需要配置一个ViewLocationExpander:
services.SetupOptions<RazorViewEngineOptions>(options =>
{
var expander = new LanguageViewLocationExpander(
context => context.HttpContext.Request.Query["language"]);
options.ViewLocationExpanders.Insert(0, expander);
});
Run Code Online (Sandbox Code Playgroud)
这是 LanguageViewLocationExpander 的实现: https://github.com/aspnet/Mvc/blob/ad8ab4b8fdb27494f5dece6f1186acea03f9dd52/test/WebSites/RazorWebSite/Services/LanguageViewLocationExpander.cs
以此AzureBlobLocationExpander为基础应该会让你走上正轨。
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |