大佬教程收集整理的这篇文章主要介绍了自定义 nopCommerce,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在开发基于 nopCommerce 的应用程序。我们的登录页面需要简约,只需要一个电子邮件 ID、密码输入字段和一个登录按钮。
您能否向我指出实现上述目标的最佳做法?
我是否修改了\Presentation\nop.Web\VIEws\Customer\ 中的相应页面和\Presentation\nop.Web\Controllers\ 中的控制器
或
是否有更好的方法来执行此操作并将所有修改过的文件组织在一个地方/文件夹中,以便升级到 nopCommerce 的未来版本不会很困难?
要求确保对项目(视图/控制器等)所做的所有更改都在一个文件夹中,以便在我们升级到较新版本的 nopCommerce 时不会覆盖它们。
我在某处读到您可以将需要更改的内容(Login.cHTML、CustomerController)复制到 themes/DefaultClean,然后在此文件夹中进行更改。我不记得我在哪里读到的。
我觉得这样做会使维护我们的代码库变得更加容易,因为您所有的自定义代码都在一个地方/文件夹/子文件夹中
这是最佳做法吗?而且这种做事方法有什么缺点吗?
在不更改核心代码中的任何内容的情况下修改您的 nopCommerce 项目的最佳方法是使用描述的插件功能 here(假设您使用的是最新版本 4.40)。
要更改登录页面,您需要在插件中将修改后的版本创建为 .cshtml 文件。然后,您需要将此文件设置为内容,并将复制到输出目录 属性设置为如果较新则复制或始终复制。
您还需要实现 IViewLOCATIOnExpander 接口,以便 Razor 引擎知道它应该使用您的自定义登录页面。实现应该是这样的:
public class MyViewLOCATIOnExpander : IViewLOCATIOnExpander
{
public IEnumerable<String> ExpandViewLOCATIOns(ViewLOCATIOnExpanderContext context,IEnumerable<String> viewLOCATIOns)
{
if(context.ViewName == "Login")
{
viewLOCATIOns = new[] { "PathToCustomLoginPage" }.Concat(viewLOCATIOns);
}
return viewLOCATIOns;
}
public void PopulateValues(ViewLOCATIOnExpanderContext context)
{
return;
}
}
之后,您还需要通过实现 INopStartup 接口来注册您的 ViewExpander。实现看起来像这样:
public class MyStartup : INopStartup
{
public int Order => int.MaxValue;
public void Configure(IApplicationBuilder application)
{
}
public void Configureservices(IserviceCollection services,IConfiguration configuration)
{
services.Configure<RazorViewENGIneOptions>(options =>
{
options.ViewLOCATIOnExpanders.Add(new MyViewLOCATIOnExpander());
});
}
}
以上是大佬教程为你收集整理的自定义 nopCommerce全部内容,希望文章能够帮你解决自定义 nopCommerce所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。