​这篇稿子是同样碗梁粉关于社群商业模式的多级文章之一,整个社群商业模式的议论系列以分成社群会员制,社群电商,社群众筹,社群媒体齐几只地方。

目录

  1. ASP.NET
    MVC搭建筑类后台UI框架—1、后台主框架
  2. ASP.NET
    MVC搭建筑项目后台UI框架—2、菜单特效
  3. ASP.NET
    MVC搭建筑项目后台UI框架—3、面板折叠和进行
  4. ASP.NET
    MVC搭建筑项目后台UI框架—4、tab多页签支持
  5. ASP.NET
    MVC搭建筑类后台UI框架—5、Demo演示Controller和View的相互
  6. ASP.NET
    MVC搭建筑项目后台UI框架—6、客户保管(添加、修改、查询、分页)
  7. ASP.NET
    MVC搭建筑项目后台UI框架—7、统计报表
  8. ASP.NET
    MVC搭建筑类后台UI框架—8、将View中摘的数额行中的一部分数据传到Controller中
  9. ASP.NET
    MVC搭建筑项目后台UI框架—9、服务器端排序
  10. ASP.NET
    MVC搭建筑类后天UI框架—10、导出excel(数据量大,非常耗时的,异步导出)

眼看同一节省,我以据此一个Demo来演示在此UI框架中,控制器和视图的相互。以沟管理也例。效果图如下:

遵回车执行查询,不是F5,笔误。

图片 1图片 2图片 3

此间我用了冲jquery的模态窗体组件lhgdialog和表格组件dataTables。dataTables更多材料要参见:http://dt.thxopen.com/example/

lhgdialog更多材料要参考:http://www.lhgdialog.com/api/

全球熙熙,皆为利来,天下攘攘,皆为利往。

Action

1、在咱们的MVC项目受到的Models文件夹着,添加一个model类ChannelInfo.cs,因为品种被之ORM框架下的凡Nhibernate,所以属性前面加了virtual

   public class ChannelInfo
    {
       public virtual int ID { get; set; }

       public virtual string ChannelStyle { get; set; }

       public virtual string ChannelCode { get; set; }
       public virtual string CnName { get; set; }
       public virtual string EnName { get; set; }

       public virtual string Status { get; set; }
    }

2、添加控制器ChannelController,这里以演示,我下的假数据

图片 4图片 5

public class ChannelController : Controller
    {
        //
        // GET: /Channel/

        public ActionResult Index()
        {
            return View();
        }
        //添加渠道
        public ActionResult AddChannel()
        {
            return View();
        }

        [HttpPost]
        public JsonResult List(ChannelInfo filter)
        {
            List<ChannelInfo> list = new List<ChannelInfo>();
            for (int i = 0; i < 1100; i++)
            {
                list.Add(new ChannelInfo
            {
                ID = 1,
                ChannelCode = "E_Express"+i,
                ChannelStyle = "香港E特快"+i,
                CnName = "香港E特快"+i,
                EnName = "HK E-Express"+i,
                Status = "1"
            });
            }
            if (!string.IsNullOrEmpty(filter.ChannelCode))
            {
                list = list.Where(x => x.ChannelCode == filter.ChannelCode.Trim()).ToList();
            }
            if (!string.IsNullOrEmpty(filter.CnName))
            {
                list = list.Where(x => x.CnName == filter.CnName.Trim()).ToList();
            }
            if (!string.IsNullOrEmpty(filter.EnName))
            {
                list = list.Where(x => x.EnName == filter.EnName.Trim()).ToList();
            }

            //构造成Json的格式传递 iTotalRecords :总记录数 iTotalDisplayRecords :每页显示的记录数
            var result = new { iTotalRecords = 1100, iTotalDisplayRecords = 10, data = list };
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    }

View Code

3、修改_Layout.cshtml,因为后面的View会用到

图片 6图片 7

<!DOCTYPE html>
<html lang="zh">
    <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta charset="utf-8" />
        <title>财务管理 @ViewBag.Title</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
@*      @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")*@
        <link href="~/Content/sharestyle.css" rel="stylesheet" />
        <link href="~/Content/main.css" rel="stylesheet" />
        <script src="~/Scripts/jquery-1.8.3.min.js"></script>
        <script src="~/Lib/lhgdialog/lhgdialog.min.js?self=true&skin=iblue"></script>
    </head>
    <body>
          @*  @RenderSection("featured", required: false)*@
            <section class="content-wrapper main-content clear-fix">
                @RenderBody()
            </section>
        @*<footer>
            <div class="copyright"> ©2015 </div>
           <div class="content-wrapper">
                <div class="float-left">
                    <p>&copy; @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p>
                </div>
            </div>
        </footer>*@
@*        @Scripts.Render("~/bundles/jquery")
        @RenderSection("scripts", required: false)*@
    </body>
</html>

View Code

4、添加渠道管理的视图Index,代码很粗略,我都加加了详细的注解,相信大家都看得掌握。这里要就补充加了列表展示,和询问过滤,分页排序。datables是支撑服务器端分页排序的,但是自此只有写了客户端排序,就是预先一次性将具备的数据查出来,然后又展开分页排序。在数据量小的情形下,体验还是好科学的,也简单。如果数据量大,就如启用服务器分页,即每次按需取数据,关于datables服务器分页网上.NET的例子很少,不过经查找,我已实现了,只是这系列没有写出来。同时datables是支撑缓存的,具体以大家可参考我及面发的网址,我这里只开只简易的引荐。
这里不好意思忘了测试兼容性问题,后面提供的源代码中Index视图这里兼容性有问题,对话框样式冲突了,在源码中求用

tbody{ height:50px;}   修改为 #table_local tbody{ height:50px;}

图片 8图片 9

@{
    ViewBag.Title = "Index";

}
<style type="text/css">
    html, body
    {
        overflow:hidden;
    }
    #table_local tbody
    {
         height:50px;
    }
    table
    {
          overflow-y:auto;
          overflow-x:hidden;
    }
</style>
<link href="~/Lib/DataTables-1.10.6/media/css/jquery.dataTablesNew.css" rel="stylesheet" />
<script src="~/Lib/DataTables-1.10.6/media/js/jquery.dataTables.min.js"></script>
<script src="~/Content/DataTablesExt.js"></script>
<script type="text/javascript">
    //查询 刷新
    function reloadList() {
        var tables = $('#table_local').dataTable().api();//获取DataTables的Api,详见 http://www.datatables.net/reference/api/
        tables.ajax.reload();
    }
    function deleteRecord(id) {
        $.dialog.confirm("确定要删除吗?", function () { $.dialog.alert("删除成功!"); }, null)
    }
    function successFun() {
        $.dialog.alert("渠道添加成功!");
    }
    //弹出框  
    var dg;
    function showPublishWin() {
        dg = new $.dialog({
            id: "AddChannel",
            title: "添加渠道",
            content: "url:/Channel/AddChannel",
            width: 424,
            height: 320,
            max: false,
            min: false,
            lock: true,
            close: true,
            cancel: true, //X按钮是否显示,如果设置了回调函数,一定会显示  
            //cancel: controlAllBtn,  
            ok: successFun //点击确定执行的回调函数
        });
        dg.show();
    }
    document.onkeydown = function (event) {
        var e = event || window.event || arguments.callee.caller.arguments[0];
        if (e && e.keyCode == 27) { // 按 Esc 
            //要做的事情
        }
        if (e && e.keyCode == 13) { // enter 键
            //要做的事情
            reloadList();
        }
    };
</script>
<script type="text/javascript">
    $(function () {
        var h = $(document).height() - 258;
        $("#table_local").dataTable({
            //"iDisplayLength": 10,//每页显示10条数据
            //这里也可以设置分页,但是不能设置具体内容,只能是一维或二维数组的方式,所以推荐下面language里面的写法。
            //"aLengthMenu": [[10, 15, 20, 25, 50, -1], [10, 15, 20, 25, 50, "All"]],
            bProcessing: true,
            //"dom": 'i,p',//l - Length changing  选择每页显示行数下拉框的控件 f - Filtering input  搜索过滤控件t - The Tabletools    导出excel,csv的按钮
            //i - Information  显示汇总信息(从 1 到 100 /共 1,288 条数据) p - Pagination   分页控件 r - pRocessing   显示加载时的进度条 C - copy 显示复制,excel的控件
            //ajax: "/SendGoods/List",
            "scrollY": h,  //垂直滚动
            "scrollCollapse": "true", //开启滚动
            "dom": 'tr<"bottom"lip><"clear">', //这个是控制布局的,不是很好理解
            "bServerSide": false,                    //指定从服务器端获取数据  
            sServerMethod: "POST", //请求方式
            sAjaxSource: "@Url.Action("List", "Channel")", //数据源
            "fnServerParams": function (aoData) {  //查询条件
                aoData.push(
                    { "name": "ChannelCode", "value": $("#ChannelCode").val() },
                    { "name": "CnName", "value": $("#CnName").val() },
                    { "name": "EnName", "value": $("#EnName").val() }
                    );
            },
            columns: [
               {
                   title: "1",
                   "visible": false,
                   "data": "ID", "sClass": "center",    //样式
                   orderable: false,    //该列不排序
                   "render": function (data, type, row) {    //列渲染
                       return "<label class='position-relative'><input id='cbx" + data + "' type='checkbox' onclick='controlSelectAll(" + data + ")' class='cbx' value='" + data + "'/>";
                   }
               },
               { "data": "ChannelCode", title: "渠道代码" },
               { "data": "ChannelStyle", title: "渠道类别" },
               { "data": "CnName", title: "中文名" },
               { "data": "EnName", title: "英文名" },
               {
                   "data": "Status", title: "是否启用", orderable: false, "render": function (data, type, row, meta) { //自定义列
                       if (data == "1") {
                           return "是";
                       }
                       else {
                           return "否";
                       }
                   }
               }
               , {
                   "data": "ID", orderable: false, title: "操作", "render": function (data, type, row, meta) { //自定义列
                       return "<a style='visibility:visible' onclick='deleteRecord(" + data + ")'>删除</a>";
                   }
               }
            ],
            paging: true,//分页
            ordering: true,//是否启用排序
            searching: false,//搜索
            language: {
                lengthMenu: '每页显示:<select class="form-control input-xsmall">' + '<option value="5">5</option>' + '<option value="10">10</option>' + '<option value="15">15</option>'
                    + '<option value="20">20</option>' + '<option value="25">25</option>' + '<option value="30">30</option>' + '<option value="35">35</option>' + '<option value="40">40</option>',//左上角的分页大小显示。
                search: '搜索:',//右上角的搜索文本,可以写html标签

                paginate: {//分页的样式内容。
                    previous: "上一页",
                    next: "下一页",
                    first: "",
                    last: ""
                },

                zeroRecords: "暂无记录",//table tbody内容为空时,tbody的内容。
                //下面三者构成了总体的左下角的内容。
                info: "总共 (_PAGES_) 页,显示 _START_ -- _END_ ,共 (_TOTAL_) 条",//左下角的信息显示,大写的词为关键字。初始_MAX_ 条 
                infoEmpty: "0条记录",//筛选为空时左下角的显示。
                infoFiltered: ""//筛选之后的左下角筛选提示,
            },
            pagingType: "full_numbers"//分页样式的类型

        });
       // $("#table_local_filter input[type=search]").css({ width: "auto" });//右上角的默认搜索文本框,不写这个就超出去了。
    });
</script>
    <div class="areabx clear" style="margin-bottom:0px;padding-bottom:0px;">
        @using (Html.BeginForm("List", null, FormMethod.Get, new { @clase = "form-inline", @role = "form" }))
        {
            <div class="areabx_header">渠道管理</div>
            <ul class="formod mgt10">
                <li>渠道代码:@Html.TextBox("ChannelCode","", new {@class="trade-time wid153" })</li>
                <li>渠道中文名:@Html.TextBox("CnName", "",new {@class="trade-time" })</li>
                <li>渠道英文名:@Html.TextBox("EnName", "",new {@class="trade-time" })</li>
            </ul>
            <div class="botbtbx pdb0">
                <input type="button" value="添加渠道" class="btn btn-primary" onclick="showPublishWin()"/>
                <input type="button" value="查询" onclick="reloadList();" class="btn btn-primary">
            </div>
        }
        <div class="tob_box mgt15">
            <table id="table_local" class="display"  cellspacing="0" cellpadding="0" border="0" style="width:100%">
            </table>
        </div>
    </div>

View Code

5、添加视图AddChannel,这里没有写了。本来还打算将修改也助长进去的,有趣味之爱侣可自己失去完成

@{
    ViewBag.Title = "添加渠道";
}
<style type="text/css">
    body {
        overflow:hidden;
    }
</style>
<h2>添加渠道</h2>
<div>开发中...</div>

鉴于要保全与绘画给的体风格一直,我修改了dataTables的体制源码

6、按F5运行

框架中之所以到之js和css、Img:CssJsImg源码

数不胜数本来从没写了,不打算写了,我就算先将这个半成品的源码贴出吧,免得小编又说自未曾足够的知识分享了,虽然是半成品,但是基本的范畴都起了。

插曲:本篇文章之前都没法在博客园首页显示的,小编给的恢复是:没有足够的知识分享。我心拔凉拔凉的。虽然字码得不多,但是代码中泻了自的合计及阅历、时间及心血。精简、通俗、易懂一直是本人追求的。

支出条件:VS2012

产生意中人评论说源码里少了dll,那片独dll都是没因此到之,我今天曾经将尚未因此底dll引用删除,所以源码下载地址更新了,给大家带来的紧巴巴请见谅!

半成品UI框架源码下载:http://pan.baidu.com/s/1c055sw4

苟源码对大家格外有帮,希望大家让个推荐,当是支撑下自家白白的技能分享,如果来再次好的建议或不同的观点,可以领取出来,大家一同探究。谢谢!

召开社群,除了公益组织社群,都避免不了讨论社群的商业模式。

有点社群,在起初期便既肯定概念跟计划好了社群变现的模式。

假定有点社群,是在渐渐前行之历程遭到,恍然大悟明白自己应当这里那里寻求变现的机。

不过会员制是所有社群的始发形态,值得咱们召开社群的恋人可以打听。

会员制-社群商业的开端形态

会员制,是社群商业的初形态,是社群的入门形式的收费。

尽早的社群会员制,可以参照所在的商会组织,协会组织也原型。

不论是哪的社群,不管发生没出实际的产品还是服务,或者仅仅只是一个聚人的小圈子,只要社群的倡导者设定了门槛,而无是外人员都得以进入的话,收取基础的会员费,是充分好之罗人群(内容吗是罗人群的另外一个手腕),提高社群成员粘性的一个手法。

打赏的才是确实好。如果社群成员愿意吗加入社群付出金钱,那么基本好看是粉丝是指向社群是可观认可的。

另外,只有付诸了后来才见面尊重,收费单是良方,一方面也会见促使社群成员注重团结的社群成员身份。

平等碗梁粉需要提醒大家之凡,收取会员费只是罗人群的手段,会员制是社群提供的不过基础产品,并非社群商业的无比要形态。

会员费对应为社群提供的底子服务或制品

社群是否能够运作地好,完全在于会员制后提供的服务和成品,例如商会是一定社群组织:

提供行业资讯

行业资源总是

供行业聚会

会员制背后的劳动和成品,这才是社群商业的底蕴,否则都是无源之水无本之木。

扭转,设身处地,从社群成员的角度来拘禁,交了钱成为了社群会员,我到底得了呀?

经社群,我学到了专业知识?

透过社群,我认识了某个行业专业人士?

通过社群,我宣传了温馨的私品牌?

社群会员制应该出旁观者清的层级结构以及升级换代要求。

便会员,VIP会员权利及白都该明显的定义,这是振奋社群成员太重点的招数有。

会员制,收费只是开始。

会员制社群商业的实例

近年来零星年较成之社群,基本都生会员制这个基础门槛,我们来举几个实例:

罗辑思维

简介:知识服务商和运营商。包括微信公众订阅号、知识类脱口秀视频节目。

会员门槛:(知识焦虑症患者,无特定门槛,一碗梁粉持保留态度)。

会员费:较早的数量显示:345万订阅用户、66000称为付费会员(铁杆会员:16000丁,亲情会员50000丁,铁杆1500每人,亲情300每人,总计4000万横)。

吴晓波频道

简介:国内目前比较充分之互联网金融社群,包括微信公众订阅号、财经类脱口秀视频及音频、书友会等现实互动式,知名财经自媒体。

会员门槛:财经人群,无一定门槛。

会员费:引用吴晓波先生原话“我们前途会员会分点儿层,一层即是180(元)的根底会员,现在增长很快,到年根儿可能会见过10万,这终究中产的一些。另外我们尚会开本金阶层有,像频道受众里发成千上万企业家,参与铸就计划的商号便大多4000大抵,我们会发出大头会,它的收费会较值钱,比较点对点之精准。”

社群规模“我最后要她不会见超过500人,更精英一些”。

李笑来 学习上再学习

简介:李笑来之付出宝群其实产生少独品类,一个为《七年》,另外一个也《共同成长》。一个凡是学习通识课,另外一个凡是商学院。

会员门槛:
《七年》是叫那些愿意得到学校并未使过如针对性个人影响要的一些基本技能的森,比如自学能力、自我管理能力,有效联系等等;而《共同成长》是片业还是投资(比如比特币)之类的学分享群。

会员费:会费2555元/人,成员每年最少要享受同不良,分享自己的知识、经历与成人。

疯蜜

简介:中国篇个O2O高端女性社群,以社群经济模式聚集中国无限上最时尚也最为会分享的高端女性群体。
以北上广深为重点驻点,
在线下发展多个「疯窝」,社群会员主要为呢菁英、名媛、行业达人齐,涉及商业、理财、公益、美容、时尚、运动、旅游、美食等多个世界。

会员制门槛:一丝都资产千万,二线城市资产 300 万打。

会员费:会员费分为 3 种,3000、5000、10000 人民币 /年,其中 “疯蜜”
总有享 49% 的收益,“疯窝” 分享
51%。第一接近可分享基本的成本价商品服务;第二类产生发作于众筹的身价;后者来投资资格。

图片 10

趁早

简介:趁早号取自被品牌创始人王潇2010年出版的多样畅销读物《女人懂得若就》。趁早品牌也18-35夏对协调发希的女提供交流分享平台与自我管理工具,让还多对好产生追、有要求的女变成希望中之和谐。

会员制门槛:定位被18-35年度之女,已至少覆盖用户 800 万总人口。

会员费:趁早会员卡由中信银行供会员系统服务,成功申请会员卡即可获得1000就早币(通过查处)。

图片 11

大方有礼数

简介:国内篇个依据网络视频和走互联网的阴社群,官网介绍为”要变成华夏先是都市女性成长平台,碰到想说的思量做的思量效仿的眷恋请的眷恋解决之怀念提高的怀念挣的,第一单想法就是是到马上来,为新时代女性的成材加点快乐、添点技术、提点考虑、减点负面,至于上市发财什么的,顺带脚儿的从业吧!”

会员制门槛:据非最新数据统计,70万闺蜜,建立600大抵单微信群,发展1000单收费会员。

会员费:整个会员系统划分也699元/年,1999元/年,8999元/年,按级别提供不同的服务和商品。

乃的社群实现会员制这个中心门槛了也?

生一样首,我们聊天社群的任何一样栽商业模式:电商。

有关社群商业模式的,更多的详细资料也可是到我之民众号”社群那些事”(wenbin-pr)中平复“PPT”获取。