亚洲必赢app在哪下载C#开发微信门户及运用(9)-微信门户菜单管理暨交至微信服务器

By admin in 亚洲必赢app在哪下载 on 2018年9月29日

微信公众号(包括服务号和订阅号)都得以对菜单进行打定义设置,我们为了方便管理,一般先把菜单数据在地面管理维护,需要创新的下,把其更新至微信服务器上虽可以了。本文基于此方法,介绍自己之微信门户平台管理体系面临菜单提交至微信服务器上之操作。微信门户应用管理体系,采用基于MVC+EasyUI的门路,由于多数域名服务器上还只好支持.NET4.0,所以以MVC3,C#4.0当支出基础,基本上能部署在任何.NET服务器上。

1、微信菜单的求跟连锁界面设计

微信公众号的菜系我们得以经过网站进行地面的田间管理,维护好它们之间的层级关系,由于微信对从定义的食谱要求比较严厉,以下是微信对从定义菜单的渴求:

此时此刻于定义菜单最多包3独一级菜单,每个一级菜单最多包含5单二级菜单。一级菜单最多4只汉字,二级菜单最多7个字,多下的有些用见面坐“…”代替。

因而我们协调因预约,不要越界即可,否则提交菜单到服务器,可能会见回到一些误,这些细节,我们在开创本地菜单管理之时节,注意一下就算得了。我以早期的平首文章吧介绍了于定义菜单的局部内容,需要可以拓展追思一下《C#付出微信门户及利用(6)–微信门户菜单的管理操作》,本篇主要是介绍在本人之平台管理网里面,调用前面介绍的菜系接口API,实现菜单提交到服务器的操作。

根据微信的自定义菜单要求,我以治本网里头,对微信的食谱几只基础性的界面设计如下。

主菜单管理界面如下所示。

亚洲必赢app在哪下载 1

补给加菜单的界面设计如下所示

亚洲必赢app在哪下载 2

微信菜单的改界面如下所示

亚洲必赢app在哪下载 3

微信菜单定义是储存于数据库里,如果需要交至微信服务器上并生效,则需要调用微信API接口进行处理,我于页面的Controller控制器里搭一个交付至服务器的拍卖方法。

亚洲必赢app在哪下载 4

 

2、提交菜单到微信服务器的操作

上面几乎单界面,主要就是基于微信菜单的性质,对菜单进行保障管理,我们最后的目的是将她坐服务器上,供我们处理客户之系事件操作的。

付给菜单的操作,我们以MVC的View页面里面,使用JQuery的Ajax提交即可(前提是咱们于控制器里面长相应的拍卖,后面介绍),界面脚本代码如下所示。

        //绑定提交按钮的的点击事件
        function BindSubmitEvent() {
            $("#btnSubmit").click(function () {
                $.messager.confirm("提交菜单确认", "您确认需要提交菜单到微信服务器吗?", function (action) {
                    if (action) {
                        //提交数据
                        $.ajax({
                            url: '/Menu/UpdateWeixinMenu',
                            type: 'post',
                            dataType: 'json',
                            success: function (data) {
                                if (data.Success) {
                                    $.messager.alert("提示", "提交微信菜单成功");
                                }
                                else {
                                    $.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
                                }
                            },
                            data: ''
                        });
                    }
                });
            });
        }

点红色的代码,就是咱于MVC的控制器里面定义的办法,我们才待通过POST方法,对控制器方法调用,就能够兑现菜单提交至微信服务器上,至于实际里面的底细,我们得把它挪到控制器或者另行底层进行处理就是了,页面不待涉及太多的逻辑就是是了。

点十分Menu控制器的UpdateWeixinMenu的方法代码如下所示(主要就是是基于自身前面介绍过的付出模型进行处理便是了)。

        /// <summary>
        ///更新微信菜单
        /// </summary>
        /// <returns></returns>
        public ActionResult UpdateWeixinMenu()
        {
            string token = base.GetAccessToken();
            MenuListJson menuJson = GetWeixinMenu();

            IMenuApi menuApi = new MenuApi();
            CommonResult result = menuApi.CreateMenu(token, menuJson);
            return ToJsonContent(result);
        }

方的几个点子这里逐一介绍一下。GetAccessToken主要就是是收获当前操作的拜会令牌,这里的操作可以就此缓存进行缓存,否则频繁的收获AccessToken,达到每天指定的次数后,当天就是无能够重复就此了。

GetWeixinMenu方法,主要就是为了有利于,对获构造微信的自定义菜单数据进行了一个函数封装,具体代码如下所示。

       /// <summary>
        /// 生成微信菜单的Json数据
        /// </summary>
        /// <returns></returns>
        private MenuListJson GetWeixinMenu()
        {
            MenuListJson menuJson = new MenuListJson();

            List<MenuNodeInfo> menuList = BLLFactory<Menu>.Instance.GetTree();
            foreach (MenuNodeInfo info in menuList)
            {
                ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.view;
                string value = (type == ButtonType.click) ? info.Key : info.Url;

                MenuJson weiInfo = new MenuJson(info.Name, type, value);
                AddSubMenuButton(weiInfo, info.Children);

                menuJson.button.Add(weiInfo);
            }
            return menuJson;
        }

 

        private void AddSubMenuButton(MenuJson menu, List<MenuNodeInfo> menuList)
        {
            if (menuList.Count > 0)
            {
                menu.sub_button = new List<MenuJson>();
            }
            foreach (MenuNodeInfo info in menuList)
            {
                ButtonType type = (info.Type == "click") ? ButtonType.click : ButtonType.view;
                string value = (type == ButtonType.click) ? info.Key : info.Url;

                MenuJson weiInfo = new MenuJson(info.Name, type, value);
                menu.sub_button.Add(weiInfo);

                AddSubMenuButton(weiInfo, info.Children);
            }
        }

 

地方的代码,就是管地面存储的MenuNodeInfo数据,通过递归遍历的方式,转换为微信的自定义菜单实体MenuJson,这样我们调用API就大有利于了,这个函数主要担负组织对应之实业信息就是了。至于调用微信API提交菜单的事体,还是让API自己亲自处理啊好,他们之代码如下所示(也就是是地方函数的有代码)。

        IMenuApi menuApi = new MenuApi();
        CommonResult result = menuApi.CreateMenu(token, menuJson);
        return ToJsonContent(result);

末了的结果是回一个通用的结果CommonResult,这个结果对象,非常便宜脚本的处理,如果来误,则提醒错误,否则也惠及判断布尔值,也即是点的页面代码脚本。

success: function (data) {
        if (data.Success) {
                  $.messager.alert("提示", "提交微信菜单成功");
           }
          else {
                    $.messager.alert("提示", "提交微信菜单失败:" + data.ErrorMessage);
            }
       },

经上述几乎有底代码,我们不怕好兑现前台MVC的视图界面,调用后台封装好的微信API,实现菜单的付出处理了。

一旦谢兴趣或体验相关的客服回复功能,可以关心自身的微信了解下。具体职能好关心自我的微信门户:广州爱奇迪,也得以扫描下二维码进行关注了解。

亚洲必赢app在哪下载 5

 

倘若对斯系列感兴趣,可以关注自我的别样文章,系列随笔如下所示:

C#付出微信门户及以(25)-微信企业号的客户端管住力量

C#开微信门户及采取(24)-微信小店货架信息保管

C#支出微信门户及利用(23)-微信小店商品管理接口的包裹和测试

C#出微信门户及以(22)-微信小店的支付和行使

C#支出微信门户及采取(21)-微信企业号的信息和波之收纳处理和解密 

C#开微信门户及利用(20)-微信企业号的菜系管理

C#付出微信门户及动(19)-微信企业号的信发送(文本、图片、文件、语音、视频、图文信息等)

C#支出微信门户及利用(18)-微信企业号的通讯录管理支付的成员管理

C#开微信门户及动(17)-微信企业号的通讯录管理支出之部门管理

C#开发微信门户及使用(16)-微信企业号的布置以及利用

C#支付微信门户及运用(15)-微信菜单增加扫一扫、发图、发地理位置功能

 C#出微信门户及下(14)-在微信菜单中动用重定向得到用户数量

C#支出微信门户及利用(13)-使用地理位置扩展相关以

C#出微信门户及以(12)-使用语音处理

C#支付微信门户及下(11)–微信菜单的余展现方法介绍

C#开发微信门户及应用(10)–在管理网遭到联合微信用户分组信息

C#支出微信门户及用(9)-微信门户菜单管理和交至微信服务器

C#出微信门户及下(8)-微信门户应用管理网机能介绍

C#支付微信门户及应用(7)-微信多客服功能与支出并

C#开发微信门户及运用(6)–微信门户菜单的田间管理操作

C#开微信门户及动(5)–用户分组信息保管

C#付出微信门户及采取(4)–关注用户列表及详细信息管理

C#出微信门户及利用(3)–文本音和图文信息的应对

C#支出微信门户及以(2)–微信信的处理以及应

C#出微信门户及下(1)–开始应用微信接口

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 亚洲必赢app官方下载 版权所有