ASP.NET 如何使用 OWIN 注册自定义视图引擎
ASP.NET How to register Custom View Engine using OWIN
我正在尝试实现自定义视图引擎,它可以让我指定额外的视图路径,如下所示:
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
{
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml"
};
MasterLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml"
};
PartialViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml",
"~/Views/Partials/Widgets/{0}.cshtml", "~/Views/Partials/Widgets/{0}.vbhtml"
};
}
}
Global.asax.cs 中有很多如何使用它的源代码,例如:Can I specify a custom location to "search for views" in ASP.NET MVC?
但是没有任何来源可以说明在使用 OWIN 时如何注册此引擎。怎么做?
试试这个:
Startup.cs
using System.Web.Mvc;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(WebApplication2.Startup))]
namespace WebApplication2
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
}
}
}
我正在尝试实现自定义视图引擎,它可以让我指定额外的视图路径,如下所示:
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
{
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml"
};
MasterLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml"
};
PartialViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml",
"~/Views/Partials/Widgets/{0}.cshtml", "~/Views/Partials/Widgets/{0}.vbhtml"
};
}
}
Global.asax.cs 中有很多如何使用它的源代码,例如:Can I specify a custom location to "search for views" in ASP.NET MVC? 但是没有任何来源可以说明在使用 OWIN 时如何注册此引擎。怎么做?
试试这个:
Startup.cs
using System.Web.Mvc;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(WebApplication2.Startup))]
namespace WebApplication2
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
}
}
}