1. 首次运行具备的条件.Net Framework 最新版本,安装MSSQL数据库配置好相应用户,连接信息 运行程序,按照要求录入信息,进行数据库初始化 2. 数据库连接文件存放位置Nop.Web-App_Data中的Settings.txt 3. 部署(发布)系统为防止每次发布都出现安装界面,发布系统后,将Settings.txtInstalledPlugins.txt 这两个文件添加到Nop.Web-App_Data中将这两个文件发布时包含在项目内 4. Nop实践
添加新的Domain.Model时建立ViewModel时添加Mapper映射需要映射 Nop.Admin.Infrastructure-AutoMapperStartupTask 5. 添加新首页(需要修改路由)Nop.web-view添加页面nop.web-controller添加Action Nop.web-Global修改默认路由 Nop.web-Infrastructure-RouterProvider.cs修改HomePage路由 6. 添加系统后台管理功能菜单添加系统后台管理功能菜单 Nop.Admin-SiteMap.config注意命名空间 注意根菜单PermissionNames的写法,防止菜单无法显示 直接添加权限数据库permissionrecord permissionrecord_role_mapping 初始化安装时自动写入 Nop.Services.Security-StandardPermissionProvider.cs添加权限,并建立角色权限关系 Nop.Web-App_Data-Localization-defaultResources.nopres.xml 7. 添加新的Service需要注册 (构造方法自动装载) Nop.web.Framework-DipendencyRegistrar.cs 8. 添加AdminAreaSettings需要后台-商城设置-设置-所有设置里面添加此设置 9. UIView路由更改//define this routes to use in UI views (incase if you want to customize some of them later) Nop.web-Infrastructure-GenericUrlRouteProvider.cs修改 获取RouteData请求中的参数可以自己定义,放入路由 Nop.Web.Framework.Seo-GenericPathRoute <ahref="@Url.HttpRouteUrl("xxxx",new{SeName=Model.name})">进入店铺</a> 10. 手动升级3.6(addAntiForgeryToken is not defined)addAntiForgeryToken将admin-common.js中添加下面方法 // CSRF (XSRF) security function addAntiForgeryToken(data) { //if the object is undefined, create a new one. if (!data) { data = {}; } //add token var tokenInput = $('input[name=__RequestVerificationToken]'); if (tokenInput.length) { data.__RequestVerificationToken = tokenInput.val(); } return data; }; 11. [error]:从DateTime2转换超出范围 将数据库类型改为DateTime212. Nop邮件服务器配置 邮件地址和密码必须正确,请到邮箱官网测试 邮箱-设置中启用smtp 用户名为邮箱账号@号前面部分 如果对已有邮箱进行编辑请点击修改密码,在点击保存 SSL,证书不勾选 
13. NopCommerce IE浏览器模式设置后台管理-商城配置-设置-所有设置commonsettings.renderxuacompatible设置为True
commonsettings.xuacompatiblevalue设置为IE=edge
14. 其它MVC布局页面引用说明 Controller-Action返回ActionResult为View()时会带有布局,PartailView()不带布局 View-页面中布局引用指定为null时清空所有布局 添加Nop.Admin.controller/view/validate/viewmodel注意命名空间 View中ViewModel如果没有完整命名空间必须在View文件夹中的Web.config中添加viewmodel命名空间 城市定位(百度地图): <scripttype="text/javascript"> var val; function loadJScript() { var script = document.createElement("script"); script.type = "text/javascript"; script.src ="http://api.map.baidu.com/api?v=2.0&ak=2U5HP2MpzMphq85QFySKGpMQ&callback=init"; document.body.appendChild(script); } function init() { var myCity = new BMap.LocalCity(); myCity.get(myFun); } function myFun(result) { var cityName = result.name; //window.location = "/Home/Index/"+cityName; } window.onload = loadJScript; </script> 当前位置定位(百度地图): vargeolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); var myGeo = new BMap.Geocoder(); myGeo.getLocation(new BMap.Point(r.point.lng,r.point.lat), function(rs){ // console.log(MyApp.app.mapCenter); console.log(rs); var addComp = rs.addressComponents; alert(addComp.province + addComp.city + addComp.district +addComp.street + addComp.streetNumber); }); } else { alert('未知地址('+this.getStatus()+ ')'); } }); 简单的AJAX请求(JQuery)Action functionInitCity(cityName) { var postData = { cityName: cityName }; $.ajax({ cache: false, type: "POST", url:"@(Url.Action("InitCity", "Home"))", data: postData, complete: function (data) { }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); }, traditional: true }); return false; } Nopcomerce Kendo ui 汉化(中文语言设置)在Libraries\Nop.Core\CommonHelper.cs中 SetTelerikCulture()
|