搜索
首页后端开发C#.Net教程ASP.NET微信公众号之用户分组管理web页面

本文实例为大家分享了ASP.NET微信用户分组管理的具体代码,供大家参考,具体内容如下

Model层实体类:

public class UserList
{
public string total { get; set; }
public string count { get; set; }
public userlistopenid data { get; set; }
public string next_openid { get; set; }
}
 
public class userlistopenid
{
public List<string> openid { get; set; }
}
public class WxGroupsInfo
{
public string Group_ID { get; set; }//分组编号
public string Group_Name { get; set; }//分组名称
public string Group_Count { get; set; }//分组人数
}

WX.aspx内容:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WX.aspx.cs" Inherits="test.WX" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <style type="text/css">
 .inputstyle {
 height: 35px;
 line-height: 35px;
 text-indent: 5px;
 width: 350px;
 background-image: url(&#39;images/inputbg.gif&#39;);
 background-repeat: repeat-x;
 border-top: solid 1px #a7b5bc;
 border-left: solid 1px #a7b5bc;
 border-right: solid 1px #ced9df;
 border-bottom: solid 1px #ced9df;
 margin: 15px auto 15px auto;
 }
 
 
 .g_title {
 width: 100%;
 border-bottom: 2px solid #ced9df;
 font-size: 20px;
 font-weight: bold;
 text-align: left;
 text-indent: 5px;
 height: 40px;
 line-height: 40px;
 }
 
 th {
 height: 35px;
 background-color: #31bb34;
 background-repeat: repeat-x;
 }
 
 tr { height: 30px; }
 
 #shownewgroup {
 width: 300px;
 height: 200px;
 background-color: white;
 z-index: 9999;
 border: 2px solid #DDD;
 top: 40%;
 left: 40%;
 background-color: #fff;
 position: fixed;
 margin: -100px auto auto -100px;
 display: none;
 }
 
 #shownewgroupzhezhaoceng {
 height: 200%;
 width: 200%;
 left: 0px;
 top: 0px;
 position: fixed;
 z-index: 9998;
 background: rgb(50, 50, 50);
 background: rgba(0, 0, 0, 0.5);
 display: none;
 }
 
 .closeLogin {
 height: 30px;
 border-bottom: 2px solid #31bb34;
 text-align: right;
 line-height: 30px;
 font-size: 14px;
 font-weight: bold;
 }
 
 a:hover { cursor: pointer; }
 
 .inputstyle22 {
 height: 35px;
 line-height: 35px;
 text-indent: 5px;
 width: 280px;
 background-image: url(&#39;images/inputbg.gif&#39;);
 background-repeat: repeat-x;
 border-top: solid 1px #a7b5bc;
 border-left: solid 1px #a7b5bc;
 border-right: solid 1px #ced9df;
 border-bottom: solid 1px #ced9df;
 float: left;
 margin: auto 5px auto 5px;
 }
 
 
 </style>
 
 <style type="text/css">
 
 .button {
 font: 15px Calibri, Arial, sans-serif; 
 text-shadow: 1px 1px 0 rgba(255, 255, 255, 0.4);
 
 text-decoration: none !important;
 white-space: nowrap;
 
 display: inline-block;
 vertical-align: baseline;
 position: relative;
 cursor: pointer;
 padding: 4px 20px;
 
 background-repeat: no-repeat; 
 background-position: bottom left;
 background-image: url(&#39;button_bg.png&#39;);
 
 background-position: bottom left, top right, 0 0, 0 0;
 background-clip: border-box;
 
 -moz-border-radius: 8px;
 -webkit-border-radius: 8px;
 border-radius: 8px;
 
 -moz-box-shadow: 0 0 1px #fff inset;
 -webkit-box-shadow: 0 0 1px #fff inset;
 box-shadow: 0 0 1px #fff inset;
 
 -webkit-transition: background-position 1s;
 -moz-transition: background-position 1s;
 transition: background-position 1s;
 }
 
 
 .blue.button {
 color: #0f4b6d !important;
 
 border: 1px solid #84acc3 !important;
 
 background-color: #48b5f2;
 
 background-image: url(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),
   -moz-radial-gradient(center bottom, circle,
    rgba(89, 208, 244, 1) 0, rgba(89, 208, 244, 0) 100px),
   -moz-linear-gradient(#4fbbf7, #3faeeb);
 
 background-image: url(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),
   -webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,
    from(rgba(89, 208, 244, 1)), to(rgba(89, 208, 244, 0))),
   -webkit-gradient(linear, 0% 0%, 0% 100%, from(#4fbbf7), to(#3faeeb));
 }
 
 .blue.button:hover {
 background-color: #63c7fe;
 
 background-image: url(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),
   -moz-radial-gradient(center bottom, circle,
    rgba(109, 217, 250, 1) 0, rgba(109, 217, 250, 0) 100px),
   -moz-linear-gradient(#63c7fe, #58bef7);
 
 background-image: url(&#39;button_bg.png&#39;), url(&#39;button_bg.png&#39;),
   -webkit-gradient(radial, 50% 100%, 0, 50% 100%, 100,
    from(rgba(109, 217, 250, 1)), to(rgba(109, 217, 250, 0))),
   -webkit-gradient(linear, 0% 0%, 0% 100%, from(#63c7fe), to(#58bef7));
 }
 
 
 </style>
 <script src="js/jquery-1.11.2.min.js"></script>
 <script type="text/javascript">
 
 //修改分组名称调用的函数
 function EditRoster(PayNo, name) {
 
 //alert(PayNo+":"+name);
 var url = &#39;Edit.aspx?id=&#39; + PayNo + "&name=" + name; //转向网页的地址; 
 var name = &#39;add&#39;; //网页名称,可为空; 
 var iWidth = 600; //弹出窗口的宽度; 
 var iHeight = 300; //弹出窗口的高度; 
 //获得窗口的垂直位置 
 var iTop = (window.screen.availHeight - 30 - iHeight) / 2;
 //获得窗口的水平位置 
 var iLeft = (window.screen.availWidth - 10 - iWidth) / 2;
 window.open(url, name, &#39;height=&#39; + iHeight + &#39;,innerHeight=&#39; + iHeight + &#39;,width=&#39; + iWidth + &#39;,innerWidth=&#39; + iWidth + &#39;,top=&#39; + iTop + &#39;,left=&#39; + iLeft + &#39;,status=no,toolbar=no,menubar=no,location=no,resizable=no,scrollbars=0,titlebar=no&#39;);
 }
 
 $(document).ready(function() {
 
 $(".newGroups").click(function() {
  $("#shownewgroupzhezhaoceng").show();
  $("#shownewgroup").show();
  }),
  $(&#39;.closeloginpage&#39;).click(function() {
  $("#shownewgroupzhezhaoceng").hide();
  $("#shownewgroup").hide();
  });
 });
 </script>
 </head>
 <body>
 <form id="form1" runat="server">
 <div class="g_title">分组管理</div>
 <div id="shownewgroup">
 <div class="closeLogin">
  <span style="float: left; color: #08a5e0; font-size: 18px; text-indent: 5px;">新建分组</span>
  <a class="closeloginpage button blue ">
  关闭
  </a>
 </div>
 <div style="font-size: 12px; height: 40px; color: red; line-height: 40px;">
  30字符以内
 
 </div>
 <input type="text" id="txtgroupsName" name="txtgroupsName" class="inputstyle22" maxlength="30" runat="server" value="分组名称" onfocus="if(value==defaultValue){value=&#39;&#39;;this.style.color=&#39;#000&#39;}" onblur="if(!value){value=defaultValue;this.style.color=&#39;#999&#39;}" style="color: #999"/>
 <asp:LinkButton ID="LinkBtnCreateGroup" runat="server" OnClick="LinkBtnCreateGroup_Click">
  <div style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; font-weight: bold; float: left; margin-top: 20px; margin-left: 5px; text-align: center; color: #fff;">
  确定创建
  </div>
 
 </asp:LinkButton>
 </div>
 <div id="shownewgroupzhezhaoceng"></div>
 <table style="width: 1124px; margin: 10px auto 10px auto; border: 1px solid #ecd9df; text-align: center;">
 <asp:Repeater ID="RepeaterGroupList" runat="server" OnItemCommand="RepeaterGroupList_ItemCommand" OnItemDataBound="RepeaterGroupList_ItemDataBound">
  <HeaderTemplate>
  <tr>
  <th>序号</th>
  <th>ID编号</th>
  <th>分组名称</th>
  <th>分组人数</th>
  <th>操作</th>
  </tr>
  </HeaderTemplate>
  <ItemTemplate>
  <tr style=&#39;background-color: <%#(Container.ItemIndex%2 == 0) ? "#fff" : "#ced9ff" %>&#39;>
  <td><asp:Label ID="lbXuHao" runat="server" Text=""></asp:Label></td>
  <td><%# Eval("Group_ID") %></td>
  <td><%# Eval("Group_Name") %></td>
  <td><%# Eval("Group_Count") %></td>
  <td>
  <a class="button blue" onclick=" EditRoster(&#39;<%# Eval("Group_ID") %>&#39;, &#39;<%# Eval("Group_Name") %>&#39;); ">修改分组名称</a>
  <asp:LinkButton ID="LinkBtnDeleteGroup" runat="server" CommandName="DeleteGroups" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">删除分组</asp:LinkButton>
 
  <asp:LinkButton ID="LinkBtnSendByGroup" runat="server" CommandName="SendByGroups" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">此分组消息群发</asp:LinkButton>
 
  <asp:LinkButton ID="LinkBtnMoveUserToGroup" runat="server" CommandName="MoveUserToGroup" CommandArgument=&#39;<%# Eval("Group_ID") %>&#39; CssClass="button blue">移动分组</asp:LinkButton>
  </td>
  </tr>
  </ItemTemplate>
 </asp:Repeater>
 </table>
 <a class="newGroups"><div style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; margin: 10px auto 10px 28px; font-weight: bold; float: left; text-align: center; color: #fff;"> ┼ 新建分组</div></a>
 </form>
 </body>
</html>

WX.aspx.cs代码:

public partial class WX : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 BindGroupList();
 this.DataBind();
 }
 
 
 private void BindGroupList()
 {
 WeiXinServer wxs = new WeiXinServer();
 
 //从缓存读取accesstoken
 string Access_token = Cache["Access_token"] as string;
 
 if (Access_token == null)
 {
 //如果为空,重新获取
 Access_token = wxs.GetAccessToken();
 //设置缓存的数据7000秒后过期
 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),
  System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 
 string jsonres = "";
 
 string content = Cache["AllGroups_content"] as string;
 
 if (content == null)
 {
 jsonres = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + Access_tokento;
 
 HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(jsonres);
 myRequest.Method = "GET";
 HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();
 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 content = reader.ReadToEnd();
 reader.Close();
 
 //设置缓存的数据7000秒后过期
 Cache.Insert("AllGroups_content", content, null, DateTime.Now.AddSeconds(7000),
  System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 //使用前需要引用Newtonsoft.json文件
 JObject jsonObj = JObject.Parse(content);
 
 
 int groupsnum = jsonObj["groups"].Count();
 
 
 List<WxGroupsInfo> wxgrouplist = new List<WxGroupsInfo>();
 
 for (int i = 0; i < groupsnum; i++)
 {
 WxGroupsInfo wginfo = new WxGroupsInfo();
 
 wginfo.Group_ID = jsonObj["groups"][i]["id"].ToString();
 
 wginfo.Group_Name = jsonObj["groups"][i]["name"].ToString();
 
 wginfo.Group_Count = jsonObj["groups"][i]["count"].ToString();
 
 wxgrouplist.Add(wginfo);
 }
 
 this.RepeaterGroupList.DataSource = wxgrouplist;
 this.RepeaterGroupList.DataBind();
 }
 
 
 /// <summary>
 /// 绑定事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void RepeaterGroupList_ItemDataBound(object sender, RepeaterItemEventArgs e)
 {
 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
 {
 Label lbXuHao = e.Item.FindControl("lbXuHao") as Label;
 
 int num = 1;
 
 lbXuHao.Text = num.ToString();
 
 for (int i = 0; i < this.RepeaterGroupList.Items.Count; i++)
 {
  num += 1;
  lbXuHao.Text = num.ToString();
 }
 
 
 LinkButton LinkBtnDeleteGroup = e.Item.FindControl("LinkBtnDeleteGroup") as LinkButton;
 LinkButton LinkBtnSendByGroup = e.Item.FindControl("LinkBtnSendByGroup") as LinkButton;
 
 LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm(&#39;您确定要删除该分组?删除后该分组内的人员即将恢复到默认分组!&#39;)");
 LinkBtnDeleteGroup.Attributes.Add("OnClick", "return confirm(&#39;您确定要群发消息到该分组?&#39;)");
 }
 }
 
 /// <summary>
 /// 执行事件
 /// </summary>
 /// <param name="source"></param>
 /// <param name="e"></param>
 protected void RepeaterGroupList_ItemCommand(object source, RepeaterCommandEventArgs e)
 { 
 if (e.CommandName == "DeleteGroups")
 {
 WeiXinServer wxs = new WeiXinServer();
 string res = "";
 
 //从缓存读取accesstoken
 string Access_token = Cache["Access_token"] as string;
 
 if (Access_token == null)
 {
  //如果为空,重新获取
  Access_token = wxs.GetAccessToken();
 
  //设置缓存的数据7000秒后过期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),
  System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 
 
 string posturl = "https://api.weixin.qq.com/cgi-bin/groups/delete?access_token=" + Access_tokento;
 
 
 //POST数据例子: POST数据例子:{"group":{"id":108}}
 
 string groupid = e.CommandArgument.ToString();
 
 string postData = "{\"group\":{\"id\":\"" + groupid + "\"}}";
 
 res = wxs.GetPage(posturl, postData);
 
 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",
  "alert(&#39;删除成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", true);
 }
 
 if (e.CommandName == "SendByGroups")
 {
 WeiXinServer wxs = new WeiXinServer();
 string res = "";
 
 //从缓存读取accesstoken
 string Access_token = Cache["Access_token"] as string;
 
 if (Access_token == null)
 {
  //如果为空,重新获取
  Access_token = wxs.GetAccessToken();
 
  //设置缓存的数据7000秒后过期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),
  System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 
 
 string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=" + Access_tokento;
 
 string groupid = e.CommandArgument.ToString();
 
 //string postData = "{\"group\":{\"id\":\"" + groupid.ToString() + "\"}}";
 
 JObject postData = new JObject();
  JObject filter = new JObject();
  filter.Add("is_to_all", false);
  filter.Add("group_id", groupid);
 
  JObject text = new JObject();
  text.Add("content", "测试内容!");
 
  postData.Add("filter", filter);
  postData.Add("text", text);
  postData.Add("msgtype", "text");
 
 res = wxs.GetPage(posturl, postData.ToString());
 
 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",
  "alert(&#39;群发成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", true);
 }
 
 if (e.CommandName == "MoveUserToGroup")
 {
 WeiXinServer wxs = new WeiXinServer();
 string res = "";
 string Access_token = Cache["Access_token"] as string;
 
 if (Access_token == null)
 {
  Access_token = wxs.GetAccessToken();
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 string posturl = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=" + Access_tokento;
 
 string UserListurl = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Access_tokento + "&next_openid=";
 
 
 //{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
 res = wxs.GetPage(UserListurl,"");
 UserList userList= JsonConvert.DeserializeObject<UserList>(res);
 String openid=userList.data.openid.FirstOrDefault();
 int togroup_id = 101;//输入分组ID
 string postData = "{\"openid\":\"" + openid + "\",\"to_groupid\":" + togroup_id + "}";
 res = wxs.GetPage(posturl, postData);
 
 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",
  "alert(&#39;移动分组成功!由于缓存问题,您可能需要重新登录才能看到效果!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", true);
 }
 }
 
 /// <summary>
 /// 创建分组
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void LinkBtnCreateGroup_Click(object sender, EventArgs e)
 {
 if (this.txtgroupsName.Value.Equals("分组名称"))
 {
 ////
 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;不能为空!&#39;)", true);
 this.txtgroupsName.Focus();
 return;
 }
 
 
 WeiXinServer wxs = new WeiXinServer();
 string res = "";
 
 ///从缓存读取accesstoken
 string Access_token = Cache["Access_token"] as string;
 
 if (Access_token == null)
 {
 //如果为空,重新获取
 Access_token = wxs.GetAccessToken();
 
 //设置缓存的数据7000秒后过期
 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),
  System.Web.Caching.Cache.NoSlidingExpiration);
 }
 
 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 
 
 string posturl = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=" + Access_tokento;
 
 string postData = "{\"group\":{\"name\":\"" + this.txtgroupsName.Value.ToString().Trim() + "\"}}"; 
 res = wxs.GetPage(posturl, postData); 
 ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",
 "alert(&#39;创建成功!如未显示,请退出重新登录即可!&#39;);location=&#39;WxGroupManageList.aspx&#39;;", true);
 }
 }

WeiXinServer.cs代码:

/// <summary>
 /// 微信服务类
 /// </summary>
 public class WeiXinServer
 {
 /// <summary>
 /// 获取通行证
 /// </summary>
 /// <returns></returns>
 public string GetAccessToken()
 {
 string url_token =
 "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx3eb5bf1290db2ca0&secret=e6013be0a7338c7d3e02877db116e231";
 HttpWebRequest myRequest = (HttpWebRequest) WebRequest.Create(url_token);
 myRequest.Method = "GET";
 HttpWebResponse myResponse = (HttpWebResponse) myRequest.GetResponse();
 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 string content = reader.ReadToEnd();
 reader.Close();
 return content;
 }
 
 public string GetPage(string p, string postData)
 {
 Stream outstream = null;
 Stream instream = null;
 StreamReader sr = null;
 HttpWebResponse response = null;
 HttpWebRequest request = null;
 Encoding encoding = Encoding.UTF8;
 byte[] data = encoding.GetBytes(postData);
 // 准备请求...
 try
 {
 // 设置参数
 request = WebRequest.Create(p) as HttpWebRequest;
 CookieContainer cookieContainer = new CookieContainer();
 request.CookieContainer = cookieContainer;
 request.AllowAutoRedirect = true;
 request.Method = "POST";
 request.ContentType = "application/x-www-form-urlencoded";
 request.ContentLength = data.Length;
 outstream = request.GetRequestStream();
 outstream.Write(data, 0, data.Length);
 outstream.Close();
 //发送请求并获取相应回应数据
 response = request.GetResponse() as HttpWebResponse;
 //直到request.GetResponse()程序才开始向目标网页发送Post请求
 instream = response.GetResponseStream();
 sr = new StreamReader(instream, encoding);
 //返回结果网页(html)代码
 string content = sr.ReadToEnd();
 string err = string.Empty;
 return content;
 }
 catch (Exception ex)
 {
 string err = ex.Message;
 return string.Empty;
 }
 }
 }

Edit.aspx内容:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Edit.aspx.cs" Inherits="test.Edit" %>
 
<html >
 <head runat="server">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title></title>
 <style type="text/css">
 .inputstyle {
 height: 35px;
 line-height: 35px;
 text-indent: 5px;
 width: 280px;
 background-image: url(&#39;images/inputbg.gif&#39;);
 background-repeat: repeat-x;
 border-top: solid 1px #a7b5bc;
 border-left: solid 1px #a7b5bc;
 border-right: solid 1px #ced9df;
 border-bottom: solid 1px #ced9df;
 float: left;
 margin: auto 5px auto 5px;
 }
 
 </style>
 </head>
 <body>
 <form id="form1" runat="server">
 <table border="1" style="width: 500px; border-collapse: collapse; margin: 20px auto 20px auto; line-height: 40px;">
 <tr>
  <td style="text-align: right;">分组编号:</td>
  <td> <asp:TextBox ID="txtGroupId" CssClass="inputstyle" Enabled="false" runat="server"></asp:TextBox></td>
 </tr>
 <tr>
  <td style="text-align: right;">分组名称:</td>
  <td> 
  <asp:TextBox ID="txtGroupName" CssClass="inputstyle" runat="server"></asp:TextBox>
  </td>
 </tr>
 <tr>
  <td></td>
  <td>
  <asp:LinkButton ID="LinkBtnSet" runat="server" OnClick="LinkBtnSet_Click" ><div style="background-image: url(&#39;images/buttonbg.png&#39;); width: 111px; height: 35px; line-height: 35px; float: left; font-weight: bold; text-align: center; color: #fff;"> 设 置</div></asp:LinkButton></td>
 </tr>
 </table>
 </form>
 </body>
</html>

Edit.aspx.cs代码:

public partial class Edit : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.QueryString["id"] != null)
{
 string group_id = Request.QueryString["id"].ToString();
 string group_name = Request.QueryString["name"].ToString();
 this.txtGroupId.Text = group_id.ToString();
 this.txtGroupName.Text = group_name.ToString();
 this.txtGroupName.Focus();
}
}
}
 
/// <summary>
/// 设置
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void LinkBtnSet_Click(object sender, EventArgs e)
{
if (String.IsNullOrWhiteSpace(this.txtGroupName.Text.ToString().Trim()))
{
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;不能为空!&#39;);", true);
this.txtGroupName.Focus();
return;
}
if (this.txtGroupName.Text.Trim().Length > 30)
{
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;组名称应在30个字符之内!&#39;);", true);
this.txtGroupName.Focus();
return;
}
 
WeiXinServer wxs = new WeiXinServer();
string res = "";
 
//从缓存读取accesstoken
string Access_token = Cache["Access_token"] as string;
 
if (Access_token == null)
{
//如果为空,重新获取
Access_token = wxs.GetAccessToken();
 
//设置缓存的数据7000秒后过期
Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000),
 System.Web.Caching.Cache.NoSlidingExpiration);
}
 
string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);
 
string posturl = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=" + Access_tokento;
 
//POST数据例子:POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}
 
string postData = "{\"group\":{\"id\":\"" + txtGroupId.Text + "\",\"name\":\"" + this.txtGroupName.Text +
 "\"}}";
res = wxs.GetPage(posturl, postData);
 
//使用Newtonsoft.json
JObject jsonObj = JObject.Parse(res);
 
//获取返回结果的正确|true|false,
string isright = jsonObj["errcode"].ToString(); //0
string istrueorfalse = jsonObj["errmsg"].ToString(); //ok
if (isright.Equals("0") && istrueorfalse.Equals("ok"))
{
//修改成功之后,刷新父窗体,关闭本页
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "",
 "alert(&#39;修改成功!如未正常显示,属缓存问题,请重新登录即可!&#39;);window.open![这里写图片描述](http://img.blog.csdn.net/20161008103126694)er.location.reload();this.close();", true);
}
else
{
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;修改失败!&#39;);this.close();",
 true);
}
}
}

buttonbg.png

ASP.NET微信公众号之用户分组管理web页面

结果如图:

ASP.NET微信公众号之用户分组管理web页面

ASP.NET微信公众号之用户分组管理web页面

ASP.NET微信公众号之用户分组管理web页面

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
C#和.NET运行时:它们如何一起工作C#和.NET运行时:它们如何一起工作Apr 19, 2025 am 12:04 AM

C#和.NET运行时紧密合作,赋予开发者高效、强大且跨平台的开发能力。1)C#是一种类型安全且面向对象的编程语言,旨在与.NET框架无缝集成。2).NET运行时管理C#代码的执行,提供垃圾回收、类型安全等服务,确保高效和跨平台运行。

C#.NET开发:入门的初学者指南C#.NET开发:入门的初学者指南Apr 18, 2025 am 12:17 AM

要开始C#.NET开发,你需要:1.了解C#的基础知识和.NET框架的核心概念;2.掌握变量、数据类型、控制结构、函数和类的基本概念;3.学习C#的高级特性,如LINQ和异步编程;4.熟悉常见错误的调试技巧和性能优化方法。通过这些步骤,你可以逐步深入C#.NET的世界,并编写高效的应用程序。

c#和.net:了解两者之间的关系c#和.net:了解两者之间的关系Apr 17, 2025 am 12:07 AM

C#和.NET的关系是密不可分的,但它们不是一回事。C#是一门编程语言,而.NET是一个开发平台。C#用于编写代码,编译成.NET的中间语言(IL),由.NET运行时(CLR)执行。

c#.net的持续相关性:查看当前用法c#.net的持续相关性:查看当前用法Apr 16, 2025 am 12:07 AM

C#.NET依然重要,因为它提供了强大的工具和库,支持多种应用开发。1)C#结合.NET框架,使开发高效便捷。2)C#的类型安全和垃圾回收机制增强了其优势。3).NET提供跨平台运行环境和丰富的API,提升了开发灵活性。

从网络到桌面:C#.NET的多功能性从网络到桌面:C#.NET的多功能性Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

C#.NET与未来:适应新技术C#.NET与未来:适应新技术Apr 14, 2025 am 12:06 AM

C#和.NET通过不断的更新和优化,适应了新兴技术的需求。1)C#9.0和.NET5引入了记录类型和性能优化。2).NETCore增强了云原生和容器化支持。3)ASP.NETCore与现代Web技术集成。4)ML.NET支持机器学习和人工智能。5)异步编程和最佳实践提升了性能。

c#.net适合您吗?评估其适用性c#.net适合您吗?评估其适用性Apr 13, 2025 am 12:03 AM

c#.netissutableforenterprise-levelapplications withemofrosoftecosystemdueToItsStrongTyping,richlibraries,androbustperraries,androbustperformance.however,itmaynotbeidealfoross-platement forment forment forment forvepentment offependment dovelopment toveloperment toveloperment whenrawspeedsportor whenrawspeedseedpolitical politionalitable,

.NET中的C#代码:探索编程过程.NET中的C#代码:探索编程过程Apr 12, 2025 am 12:02 AM

C#在.NET中的编程过程包括以下步骤:1)编写C#代码,2)编译为中间语言(IL),3)由.NET运行时(CLR)执行。C#在.NET中的优势在于其现代化语法、强大的类型系统和与.NET框架的紧密集成,适用于从桌面应用到Web服务的各种开发场景。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具