我最近开始从事NOP Commerce 4.2项目的工作。
我想在现有视图中添加一些输入字段并将其保存到数据库。我不知道如何在不触摸现有视图和控制器的情况下覆盖插件中的现有视图的完整想法。我正在寻找逐步覆盖视图并将数据保存到数据库的逐步方法。
我进行了很多搜索,但没有找到能提供像这样的要求的完整流程的任何解决方案。
您的帮助将帮助许多面临相同问题的人。预先感谢。
您必须使用IViewLocationExpander来覆盖视图。1)创建一个类,名称类似于PluginViewLoctionExpander。并通过IViewLocationExpander接口继承它。
public class PluginViewLoctionExpander : IViewLocationExpander
{
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations){
if (context.AreaName == null && context.ViewName == "ContactUs")
{
viewLocations = new[] {"~Yourpath/Common/ContactUs.cshtml",
}.Concat(viewLocations);
}
return viewLocations;
}
public void PopulateValues(ViewLocationExpanderContext context)
{
}
}
2)创建PluginStartUp.cs文件。
public class PluginStartUp : INopStartup
{
public int Order
{
get { return 1001; }
}
public void Configure(IApplicationBuilder application)
{
}
public void ConfigureServices(IServiceCollection services, IConfiguration configuration)
{
services.Configure<RazorViewEngineOptions>(options =>
{
options.ViewLocationExpanders.Add(new PluginViewLoctionExpander());
});
}
}
这样,您将显示您的视图并覆盖nop.Web和Admin视图。希望对您有帮助。