希望我现在通过提供一个继承自 razor 视图引擎的自定义视图引擎并简单地添加要搜索的视图位置来完成它:
using System.Linq;
using System.Web.Mvc;
namespace MvcApplication1
{
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine()
: this(null)
{
}
public CustomViewEngine(IViewPageActivator activator)
: base(activator)
{
var partialViewLocationFormatsList = PartialViewLocationFormats.ToList();
partialViewLocationFormatsList.Add("~/Views/{1}/DisplayTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/{1}/EditorTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/Shared/DisplayTemplates/{0}.cshtml");
partialViewLocationFormatsList.Add("~/Views/Shared/EditorTemplates/{0}.cshtml");
PartialViewLocationFormats = partialViewLocationFormatsList.ToArray();
var areaPartialViewLocationFormatsList = AreaPartialViewLocationFormats.ToList();
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/{1}/DisplayTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/{1}/EditorTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/Shared/DisplayTemplates/{0}.cshtml");
areaPartialViewLocationFormatsList.Add("~/Areas/{2}/Views/Shared/EditorTemplates/{0}.cshtml");
AreaPartialViewLocationFormats = areaPartialViewLocationFormatsList.ToArray();
}
}
}
然后在 Global.asax 中注册:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());