在全局文件加如下代码
protected void Application_Start()
{
string engineDescription = string.Join(",", ViewEngines.Engines.ToList().Select(v => v.ToString()));
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomViewEngine());
}
视图引擎的类
public class CustomViewEngine : RazorViewEngine
{
#region 构造函数
public ElevenCustomViewEngine() : this(null)
{
}
public ElevenCustomViewEngine(IViewPageActivator viewPageActivator) : base(viewPageActivator)
{
this.SetEngine("");
}
#endregion
#region A
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
return base.FindView(controllerContext, viewName, masterName, useCache);
}
public override ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
{
return base.FindPartialView(controllerContext, partialViewName, useCache);
}
#endregion
#region B
protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
{
if (controllerContext.HttpContext.Request.UserAgent.Contains("Chrome/74.0.3729.169"))
{
partialPath = partialPath.Replace("/Views/", "/ChromeViews/");
}
return base.CreatePartialView(controllerContext, partialPath);
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
if (controllerContext.HttpContext.Request.UserAgent.Contains("Chrome/74.0.3729.169"))
{
viewPath = viewPath.Replace("/Views/", "/ChromeViews/");
masterPath = masterPath.Replace("/Views/", "/ChromeViews/");
}
return base.CreateView(controllerContext, viewPath, masterPath);
}
#endregion
private void SetEngine(string browser)
{
if (!string.IsNullOrWhiteSpace(browser))
{
base.AreaViewLocationFormats = new string[]
{
"~/Areas/{2}/"+browser+"Views/{1}/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/{1}/{0}.vbhtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.vbhtml"
};
base.AreaMasterLocationFormats = new string[]
{
"~/Areas/{2}/"+browser+"Views/{1}/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/{1}/{0}.vbhtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.vbhtml"
};
base.AreaPartialViewLocationFormats = new string[]
{
"~/Areas/{2}/"+browser+"Views/{1}/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/{1}/{0}.vbhtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.cshtml",
"~/Areas/{2}/"+browser+"Views/Shared/{0}.vbhtml"
};
base.ViewLocationFormats = new string[]
{
"~/"+browser+"Views/{1}/{0}.cshtml",
"~/"+browser+"Views/{1}/{0}.vbhtml",
"~/"+browser+"Views/Shared/{0}.cshtml",
"~/"+browser+"Views/Shared/{0}.vbhtml"
};
base.MasterLocationFormats = new string[]
{
"~/"+browser+"Views/{1}/{0}.cshtml",
"~/"+browser+"Views/{1}/{0}.vbhtml",
"~/"+browser+"Views/Shared/{0}.cshtml",
"~/"+browser+"Views/Shared/{0}.vbhtml"
};
base.PartialViewLocationFormats = new string[]
{
"~/"+browser+"Views/{1}/{0}.cshtml",
"~/"+browser+"Views/{1}/{0}.vbhtml",
"~/"+browser+"Views/Shared/{0}.cshtml",
"~/"+browser+"Views/Shared/{0}.vbhtml"
};
}
else
{
base.AreaViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.AreaMasterLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.AreaPartialViewLocationFormats = new string[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/{1}/{0}.vbhtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.vbhtml"
};
base.ViewLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.MasterLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.PartialViewLocationFormats = new string[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
base.FileExtensions = new string[]
{
"cshtml",
"vbhtml"
};
}
}
}