一旦您在苦心经营微信公众号,很可能忽略了一件首要的事葡京赌场网址

第一,我陈述一个真相,即微信公众号内的别样内容都不被主流的寻找引擎所喜爱,也就是说,不管你内容如何,它在Google、百度这么些招来引擎中都排不到很靠前的岗位。

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,那里为了演示,我利用的假数据

葡京赌场网址 1葡京赌场网址 2

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会用到

葡京赌场网址 3葡京赌场网址 4

<!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;}

葡京赌场网址 5葡京赌场网址 6

@{
    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

若果源码对我们很有匡助,希望我们给个推荐,当是协理下我白白的技术分享,假设有更好的指出或不同的看法,可以提议来,我们齐声探索。谢谢!

或许你会说,因为这篇作品先发在简书上,后发在公众号上。不是这般的,2018年,我曾写过一篇“何人会获取二零一九年的诺贝尔(Bell)奖?”,2月7号首发于群众号“这里有诗”(poemhere),1月8号把它贴在了简书上,在百度里搜“随笔标题+我的名字”,这篇简书的作品排在首位,但这里有诗这篇首发稿就不知晓排到什么地方去了。即便一篇作品首发在公众号上,后发在专业网页上,后者的物色引擎名次仍然会远远高过前者。

目录

  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,笔误。

葡京赌场网址 7葡京赌场网址 8葡京赌场网址 9

那里自己使用了按照jquery的模态窗体组件lhgdialog和表格组件dataTables。dataTables更多材料请参见:http://dt.thxopen.com/example/

lhgdialog更多材料请参见:http://www.lhgdialog.com/api/


这还不是最不好的,最糟糕的是,你麻烦原创了内容,发在微信公众号上,有人把它复制粘贴到了网页设计标准的平台上,是平素不人能透过搜寻引擎发现你的始末的,对此广大摸索引擎用户来说,你一直不存在。
我不是在说对错,只是陈述一个实际。

因为微信这一个奇葩特性,使得它极适合用来抄袭内容,反正原创者很难通过搜寻引擎找到微信上的抄袭者,这也使得微信公众号的作品抄袭泛滥成灾,可以说,99%的微信公众号著作都不是原创的,我不是在说对错,只是陈述一个真相。

怎么会如此呢?因为同那个设计标准的页面相比较,微信公众号的稿子在搜索引擎的眼中就是一坨屎,一篇篇微信公众号的篇章就是一坨坨的屎,微信公众号的稿子页面设计是反互联网发展潮流而动的,无论从技术或者美学方面,都是一种严重的滑坡,像这么严重开倒车的成品,全世界唯一可以与之正官的是微软的IE6浏览器。

假定你正在苦心经营微信公众号,即便你以为温馨的原创内容还不易,这您有必要在微信公众号以外的地点,以合乎现行网页设计标准的格局保留一下你的情节,这是用作内容原创者的一种自己维护,否则,虽然你不这么做,也会有人这么做,看着温馨麻烦创作的始末被人家先转了去,未免有些痛苦吧。

Google

自我来举个例证吗,如若您珍惜了简书的微信号(jianshuio)的话,会小心到前几日它发的稿子中有一篇是“从五道口到国贸的偏离”,如果您在google中检索那一个题目,简书的结果排在首位:

微信公众号的著作是一种快餐,它真的会长期内给你带来一些满意感,即在刚发布的时候拿到一定的浏览量,但它会急速被人遗忘,你可能会因此查找引擎找到两年前的篇章,但你会翻一个民众号两年前的作品吧?

正文欢迎微信公众号转载。微信公众号以外的地点转载请声明原作者并附上本文链接。

互联网的网页标准一贯在提升,而当时的微软仰仗其操作系统优势,竟然强推一个不在乎世界通用网页标准的浏览器IE6,这给许多的网页开发人士带来了巨大麻烦,近期,随着年华的流逝,IE6的荼毒终于消除得几近了,而IE系的产品也因此失去了其市场龙头地位。

近年,微信推出了对于原创内容的验证,可是在它改变网页设计艺术在此以前,这种认证根本解决不了任何问题。虽然你微信公众号上的内容被验证为原创,它在主流搜索引擎面前仍然不值一提。

但是发在简书公众号上的一样篇作品名次如何呢?不精晓,因为很可能前日收工此前我也翻不到它。这篇小说的网址极其不便民搜索引擎抓取:http://mp.weixin.qq.com/s?\_\_biz=MjM5NjM4OTAyMA==&mid=203347363&idx=3&sn=ad0e9da00e98659c5815e6c22cf2dba5&3rd=MzA3MDU4NTYzMw==&scene=6\#rd
,假诺您有时光,可以尝试找找看它排在各类搜索引擎的第几页。

很多的微信公众号每日在打造着大量的网页,而这一个网页统统是不合乎当下的网页设计标准的,当然它的设计很吻合手机浏览,除此以外,这么些页面可谓一无是处,由于在规划上从未有过考虑过寻找引擎的感受,微信公众号的稿子从各样角度都在抗拒着找找。