我愿意从我的插件中覆盖“_RentalInfo.cshtml”和“_AddToCart.cshtml”页面。为此,我创建了自定义视图引擎并将文件的路径提供到“PartialViewLocationFormats、ViewLocationFormats”中。//CustomViewEngine 类
public class CustomViewEngine : ThemeableRazorViewEngine
{
public CustomViewEngine()
{
PartialViewLocationFormats = new[] { "~/Plugins/Misc.Rental/Views/Product/{0}.cshtml" };
ViewLocationFormats = new[] { "~/Plugins/Misc.Rental/Views/Product/{0}.cshtml" };
}
}
然后,我在 Plugin 中创建了 RouteProvider.cs 文件,并在视图引擎列表中添加了我的“CustomViewEngine”。我还将路线提供者的优先级设置为最高。
//RouteProvider
public partial class RouteProvider : IRouteProvider
{
#region Fields
public int Priority
{
get
{
return int.MaxValue;
}
}
#endregion
#region Methods
public void RegisterRoutes(RouteCollection routes)
{
ViewEngines.Engines.Add(new CustomViewEngine());
}
#endregion
}
最后,根据“CustomViewEngine”中提到的路径,我在插件的“Views”文件夹下创建了“_RentalInfo.cshtml”和“_AddToCart.cshtml”页面。
但是,太默认的 NopCommerce 默认的局部视图只会被显示。任何人都可以查看我的代码并让我知道我执行错误或遗漏了什么来覆盖部分视图。