预期效果:

Customer表新增一个Column

该新增字段可以在Admin段 新增 修改 列表查询及显示

示例步骤:

0.数据库表修改

alter table [Customer] add MemberType nvarchar(2) ;

1.Entity处理

Libraries\Nop.Core\Domain\Customers\Customer.cs

仿照 Username 新增

/// <summary>

/// Gets or sets the Member Type

/// </summary>

public string MemberType { get; set; }

2.EntityMap处理

Libraries\Nop.Data\Mapping\Customers\CustomerMap.cs

新增

this.Property(u => u.MemberType).HasMaxLength(2);

3.EntityModel处理

Presentation\Nop.Web\Administration\Models\Customers\CustomerModel.cs

仿照 GenderEnabled 及 Gender 新增

//可以不增加MemberTypeEnabled

//如需该设置的控制 可 NopCommerce 增加 Customer Settings

public bool MemberTypeEnabled { get; set; }

[NopResourceDisplayName("Admin.Customers.Customers.Fields.MemberType")]

[AllowHtml]

public string MemberType { get; set; }

4.增修页面

Presentation\Nop.Web\Administration\Views\Customer\_CreateOrUpdate.cshtml

仿照 @if (Model.CompanyEnabled) 新增

@if (Model.MemberTypeEnabled)

{

<div class="form-group">

<div class="col-md-3">

@Html.NopLabelFor(model => model.MemberType)

</div>

<div class="col-md-9">

@Html.NopEditorFor(model => model.MemberType)

@Html.ValidationMessageFor(model => model.MemberType)

</div>

</div>

}

5.新增操作

Presentation\Nop.Web\Administration\Controllers\CustomerController.cs

进入页面时 Model准备

修改 protected virtual void PrepareCustomerModel 的Action

新增 model.MemberTypeEnabled = _customerSettings.MemberTypeEnabled;

新增操作保存时 Post处理

修改 public ActionResult Create(CustomerModel model, bool continueEditing, FormCollection form)

的  var customer = new Customer

新增 MemberType = model.MemberType,

6.修改操作

Presentation\Nop.Web\Administration\Controllers\CustomerController.cs

进入页面时 Model准备

修改 protected virtual void PrepareCustomerModel 的Action

if (customer != null) 分支下

新增  model.MemberType = customer.MemberType;

修改操作保存时 Post处理

修改 public ActionResult Edit(CustomerModel model, bool continueEditing, FormCollection form)

仿照 username 新增

//MemberType

if (_customerSettings.MemberTypeEnabled )

{

customer.MemberType = model.MemberType;

}

7.列表页面 列表显示

Presentation\Nop.Web\Administration\Models\Customers\CustomerListModel.cs

仿照  ZipPostalCodeEnabled 新增

public bool MemberTypeEnabled { get; set; }

列表显示

Presentation\Nop.Web\Administration\Views\Customer\List.cshtml

$("#customers-grid").kendoGrid

仿照 @if (Model.CompanyEnabled) 新增

@if (Model.MemberTypeEnabled)

{

<text>{

field: "MemberType",

title: "@T("Admin.Customers.Customers.Fields.MemberType")",

width: 200

},</text>

}

其 $("#customers-grid").kendoGrid 的 url: "@Html.Raw(Url.Action("CustomerList", "Customer"))",

Presentation\Nop.Web\Administration\Controllers\CustomerController.cs

对应的  protected virtual CustomerModel PrepareCustomerModelForList(Customer customer)

return new CustomerModel 增加 MemberType = customer.MemberType,

8.列表页面 新增查询条件

1).Model处理

Presentation\Nop.Web\Administration\Models\Customers\CustomerListModel.cs

仿照 SearchZipPostalCode  新增

[NopResourceDisplayName("Admin.Customers.Customers.List.SearchMemberType")]

[AllowHtml]

public string SearchMemberType { get; set; }

2).Service处理

Libraries\Nop.Services\Customers\ICustomerService.cs

IPagedList<Customer> GetAllCustomers

增加查询参数 string memberType=null,

Libraries\Nop.Services\Customers\CustomerService.cs

public virtual IPagedList<Customer> GetAllCustomers

增加查询参数 string memberType=null,

及仿照 username 增加其Linq过滤

if (!String.IsNullOrWhiteSpace(memberType))

query = query.Where(c => c.MemberType.Contains(memberType));

3).Controller Action 处理

Presentation\Nop.Web\Administration\Controllers\CustomerController.cs

public ActionResult CustomerList(

var customers = _customerService.GetAllCustomers( 中 新增

memberType:model.SearchMemberType,

4).页面处理

Presentation\Nop.Web\Administration\Views\Customer\List.cshtml

仿照 @if (Model.ZipPostalCodeEnabled) 新增

@if (Model.MemberTypeEnabled )

{

<div class="form-group">

<div class="col-md-4">

@Html.NopLabelFor(model => model.SearchMemberType)

</div>

<div class="col-md-8">

@Html.NopEditorFor(model => model.SearchMemberType)

</div>

</div>

}

js查找及新增SearchMemberType

$("".concat("#@Html.FieldIdFor(model => model.SearchEmail),",

"#@Html.FieldIdFor(model => model.SearchUsername),",

"#@Html.FieldIdFor(model => model.SearchMemberType),",

js查找及新增SearchMemberType

function additionalData() {

var data = {

SearchCustomerRoleIds: $('#@Html.FieldIdFor(model => model.SearchCustomerRoleIds)').val(),

SearchEmail: $('#@Html.FieldIdFor(model => model.SearchEmail)').val(),

SearchMemberType: $('#@Html.FieldIdFor(model => model.SearchMemberType)').val(),

9.增加文本资源

运行站点

Admin -> Configuration -> Languages -> Edit

-> String resources -> Add new record

Admin.Customers.Customers.Fields.MemberType

Admin.Customers.Customers.List.SearchMemberType

10.解决方案 Clean 和 Rebuild

运行站点 查看效果

NopCommerce 增加 Customer Field的更多相关文章

  1. NopCommerce 增加 Customer Settings

    预期: 仿照Customer 的 Phone number enabled 和 required 增加MemberType 相关步骤如下: 1.运行站点 Admin -> Settings -& ...

  2. NopCommerce 增加 Customer Attributes

    预期: Customer 新增一个自定义属性 运行站点 1.Admin -> Settings -> Customer settings -> Customer form field ...

  3. 如何为Rails作贡献:例增加rich_text field generators

    如何为Rails作贡献 例增加rich_text field generators 下载https://github.com/rails/rails 打开atom,在 rails/railties/l ...

  4. [转]教你一招 - 如何给nopcommerce增加新闻类别模块

    本文转自:http://www.nopchina.net/post/nopchina-teach-newscategory.html nopcommerce的新闻模块一直都没有新闻类别,但是很多情况下 ...

  5. [转]教你一招 - 如何给nopcommerce增加一个类似admin的area

    本文转自:http://www.cnblogs.com/wucf2004/p/nopcommerce-area.html asp.net mvc里面的area是什么,点击这里查看 如果在nopcomm ...

  6. NopCommerce 关于Customer的会员类别及会员价处理 的尝试途径

    示例效果: 当Customer是某个会员级别或内部员工时, 购物结算时享受一定的折扣: 相关设定如下: Step1.新增会员类别    Admin - Customers - Customer rol ...

  7. 教你一招 - 如何给nopcommerce增加一个类似admin的area

    asp.net mvc里面的area是什么,点击这里查看 如果在nopcommerce里面加入类似admin的area,步骤如下: 1.新建一个mvc空项目MvcApplication1,位置放在\N ...

  8. openerp 经典收藏 Openerp开发进销存系统完毕总结(转载)

    原文地址:http://blog.csdn.net/heartrude/article/details/9142463 Openerp开发进销存系统完毕总结 分类: 代码历程 OpenERP 工程思想 ...

  9. mysql中的sql

    变量 用户变量: 在用户变量前加@ 系统变量: 在系统变量前加@@ 运算符 算术运算符有: +(加), -(减), * (乘), / (除) 和% (求模) 五中运算 位运算符有: & (位于 ...

随机推荐

  1. 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command)

    [源码下载] 背水一战 Windows 10 (25) - MVVM: 通过 x:Bind 实现 MVVM(不用 Command) 作者:webabcd 介绍背水一战 Windows 10 之 MVV ...

  2. div自适应布局

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OnlineShowPage ...

  3. 疯狂Android讲义 - 学习笔记(五)

    第五章 Android使用统一的Intent对象来封装“启动意图”,不管是启动Activity.Service组件.或者BroadcastReceiver等,提供了一致的编程模型.Intent设计有点 ...

  4. [修正] 移动平台曲线不平滑的问题(如:TRectangle, TPath...等)

    问题:从 XE4 以来,Firemonkey 曲线绘图在移动平台不平滑的问题一直令人诟病,提交到官方的 QC 也是族繁不及备载,官方似乎有意的避开这个问题,迟迟没有修正. 适用版本:XE4 ~ Ber ...

  5. jquery.zclip轻量级复制失效问题

    工作原理 利用一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就可以使用 Flash 的复制功能了 <script src="js/jquer ...

  6. CSS中详解hight属性

    目录结构: // contents structure [-] hight属性值类型一览表 height的%的使用 定义 实例 需要注意的 参考文章 hight属性值类型一览表 value descr ...

  7. PHP语法

    * PHP语法 * 常量与变量 * 常量 - 一旦定义并初始化后,值不会改变 * 使用const关键字 const 常量名=常量值 * define(常量名,常量值) * 变量 - "$&q ...

  8. 3D banner(CSS3+HTML5)

    1.这是一篇 3Dbanner制作的简易流程,支持高版本的chrome和firefox浏览器,俩浏览器显示可能会有些差异 2.没有兼容性代码,因为仅仅只是熟悉流程,希望小伙伴们自己改善哈(>﹏& ...

  9. 有氧运动 && 无氧运动

    有氧运动也叫做有氧代谢运动,是指人体在氧气充分供应的情况下进行的体育锻炼.有氧运动的好处是:可以提升氧气的摄取量,能更好地消耗体内多余的热量.也就是说,在运动过程中,人体吸入的氧气与需求相等,达到生理 ...

  10. ORACLE会话连接进程三者总结

    概念介绍 通俗来讲,会话(Session) 是通信双方从开始通信到通信结束期间的一个上下文(Context).这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器.通过哪个应用程序.哪个用户 ...