做网站的一点笔记

阅读: 评论:0

做网站的一点笔记

做网站的一点笔记

1.网页自动刷新 <meta http-equiv="refresh" content="1000"  />,这个标签的功能还真是强大,长见识了。
2.设为首页 <pre class="javascript" name="code"><script language="javascript" type="text/javascript">function setHomepage() { // 设为首页if (document.all){document.body.style.behavior = 'url(#default#homepage)';document.body.setHomePage('');}else if (window.sidebar) {if (windowscape) {try {netscape.ablePrivilege("UniversalXPConnect");}catch (e) {alert("该操作被浏览器拒绝,假如想启用该功能,请在地址栏内输入 about:config,然后将项 debase_principal_support 值该为true");}}var prefs = Components.classes['@mozilla/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);prefs.setCharPref('browser.startup.homepage', '');}}
</script>

3.给搜索框的导航添加样式,选中一个变色,这个用jq操作,添加点击事件,通过attr获取标签属性值,通过addclass ,removeclass 和siblings搞定。具体代码如下
#regin
<script type="text/javascript">
     jQuery(function () {
         var daoh = "2";
         var searchval;
         jQuery("#searchid a").click(function () {
             jQuery(this).addClass("seach_nav on").siblings().removeClass("seach_nav on");
             daoh = jQuery(this).attr("cc");
             if (daoh == "8") {
                 jQuery(this).attr("class", "");
             }
         });
     });
    </script>
#endregin
4.选项卡形式的延时加载(脚本太大如需要请联系我)
<script type="text/javascript">
        $(function () {
            $("img[original]").lazyload({ placeholder: "myimages/grey.gif" });
        });
        // 部分区域图片延迟加载
        function lazyloadForPart(container) {
            container.find('img').each(function () {
                var original = $(this).attr("original");
                if (original) {
                    $(this).attr('src', original).removeAttr('original');
                }
            });
        }
        function setContentTab(name, curr, n) {
            for (i = 1; i <= n; i++) {
                var menu = ElementById(name + i);
                var cont = ElementById("con_" + name + "_" + i);
                menu.className = i == curr ? "current" : "";
                if (i == curr) {
                    cont.style.display = "block";
                    lazyloadForPart($(cont));
                } else {
                    cont.style.display = "none";
                }
            }
        }
    </script>
5.定时更新,定时器的类在这直说system.Time.time ,写这个的感谢好些人的技术上的友情赞助,interval这个方法,事件间隔的出发时间二十分钟内网站没有访问的话
定时器就会被回收了,所以需要第一条的meta标签,或者其他访问网站的方法。
 
        protected void Application_Start(Object sender, EventArgs e)
        {        

            MakeIndexHtml s = new MakeIndexHtml();Timer aTimer = new Timer();

aTimer.Elapsed += new ElapsedEventHandler(s.btn_makeIndex_Click); 此事件是抓取其他网站信息,以达到更新的目的。
            aTimer.Interval = 1000 * 60 *19;
            aTimer.AutoReset = true;
            aTimer.Start();
        }
6.期间为了实现定时器这一功能,一些server的方法得不能用了,转义的Server.HtmlDecode(),读取xml,html文件是忽略空格,获取文件物理路径Server.MapPath();

Server.MapPath("") :返回当前页面所在的物理文件路径

Server.MapPath("/") :返回应用程序根目录所在的物理文件路径

Server.MapPath("./") :返回当前页面所在的物理文件路径

Server.MapPath("../"):返回当前页面所在的上一级的物理文件路径

Server.MapPath("~/"):返回应用程序的虚拟目录(路径)

Server.MapPath("~"):返回应用程序的虚拟目录(路径)

哥们在此借花献佛了。在定时器运行的时候需要使用这个HttpRuntime.AppDomainAppPath+“”
7.读取XML 需要使用这个专门处理xml的类
 XmlDocument xx = new XmlDocument();
            xx.Load("=all&doctype=rss");从指定url读取xml
            XmlNodeList xmlList = xx.SelectNodes("rss/channel/item/description");
此xml里面还存在html我在这里用的是人家写好的dll ,在就就不细说了。

8,在读取图片的时候,src明明有,很存在加载失败的问题,为此写了个验证状态码的方法。
  public int GetStatusCode(string url)
        {

            HttpWebRequest request = null;

            HttpWebResponse response = null;

            try
            {

                request = (HttpWebRequest)WebRequest.Create(url);

                request.ContentType = "application/x-www-form-urlencoded";

                request.UserAgent = "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1";

                request.Method = "GET";

                //如果请允许跳转,请求的地址跳转到最后一个页面的地址状态

                request.AllowAutoRedirect = false;

                response = (HttpWebResponse)request.GetResponse();

                return (int)response.StatusCode;

            }

            catch (WebException webex)//404,500等getresponse时会异常
            {

                response = (HttpWebResponse)webex.Response;

                if (response != null)

                    return (int)response.StatusCode;

                return -1;

            }

            catch
            {

                return -1;

            }

            finally
            {

                if (response != null)
                {

                    response.Close();

                }

            }

        }  

状态码为200就ok了,搜一贼。

9,发现个小东西,太鄙陋了javascript:"(-1);" histotry 是网址url集合,跟document一样的内置对象,go的方法的参数为数字的,默认当前的为0,
为-1表示跳转到之前浏览的页面。s
10,access数据库数据,导入到sql server中,原来这么简单,只需在工具栏中的找到那个处理sql的按钮,按步骤即可。
11.session 默认过期时间是20分钟,以以类似散列表的形式存在服务端,如果数据量大的话会对服务器产生一定压力;cookie 默认过期时间是1000分钟,存在客户端,
所以不安全,防止别人解析进行cookie欺诈,cookie的大小为4k。

 
 
MVC 部分
   1.excel导出,直接上代码了
<p>    public ActionResult OutPutExcelForKindergarten(string syjCode,  string name){try{var rq = AllRestRequst.Build(CateringUnitMethod.QuerySchoolCateringUnitBySyjCodeAndName, Method.GET, false);rq.AddParameter("syjCode", syjCode);rq.AddParameter("name", name);rq.AddParameter("pageIndex", 1);rq.AddParameter("pageSize", 10000);var obj = RestServiceProvider.Instance.SendRequest<ResponseRaw<CateringUnitDtos>>(rq, CateringUnitUrl);List<CateringUnit> OutPutExcelList = new List<CateringUnit>();foreach (var cateringunit in obj.GetEntity().CateringUnits){CateringUnit oupcateringUnit = new CateringUnit();oupcateringUnit.Id = cateringunit.Id;oupcateringUnit.Name = cateringunit.Name;oupcateringUnit.Address = cateringunit.Address;oupcateringUnit.Phone = cateringunit.Phone;oupcateringUnit.Syj = cateringunit.Syj;oupcateringUnit.CirculationLicense = cateringunit.CirculationLicense;oupcateringUnit.Status = cateringunit.Status;oupcateringUnit.Principal = cateringunit.Principal;oupcateringUnit.PrincipalPhone = cateringunit.PrincipalPhone;oupcateringUnit.CateringUnitCategory = cateringunit.CateringUnitCategory;oupcateringUnit.Kindergarten = cateringunit.Kindergarten;oupcateringUnit.StartDate = cateringunit.StartDate;oupcateringUnit.EndDate = cateringunit.EndDate;oupcateringUnit.LegalPerson = cateringunit.LegalPerson;oupcateringUnit.ContractPerson = cateringunit.ContractPerson;oupcateringUnit.Remark = cateringunit.Remark;OutPutExcelList.Add(oupcateringUnit);}string path = Server.MapPath("~/Tmp");if (!Directory.Exists(path))Directory.CreateDirectory(path);string file = Path.Combine(path, "CateringUnitList.xls");if (System.IO.File.Exists(file))System.IO.File.Delete(file);OutPutExcelPath(OutPutExcelList, file);Response.AddHeader("Content-Disposition", "attachment;filename =" + HttpUtility.UrlEncode("餐饮单位列表", System.Text.Encoding.UTF8) + ".xls");//经典模式//输出return File(file, "application/msexcel");}catch (Exception e){return Content("<script>alert('导出失败!原因:" + e.Message + "')</script>", "text/html");}}public void OutPutExcelPath(List<CateringUnit> list, string path){try{#region 创建Excelusing (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)){HSSFWorkbook wb = new HSSFWorkbook();ISheet sheet = wb.CreateSheet("AwardsRecord");IRow rowHeader = sheet.CreateRow(0);rowHeader.Cells.AddRange(new ICell[]{rowHeader.CreateCell(0,CellType.String),//名称rowHeader.CreateCell(1,CellType.String),//地址rowHeader.CreateCell(2,CellType.String),//电话rowHeader.CreateCell(3,CellType.String),//所属药局rowHeader.CreateCell(4,CellType.String),//餐饮服务许可证号rowHeader.CreateCell(5,CellType.String),//状态rowHeader.CreateCell(6,CellType.String),//负责人rowHeader.CreateCell(7,CellType.String),//负责人电话rowHeader.CreateCell(8,CellType.String),//餐饮单位类别    rowHeader.CreateCell(9,CellType.String),//学校rowHeader.CreateCell(10,CellType.String),//餐饮服务许可证有效起始日期rowHeader.CreateCell(11,CellType.String),//餐饮服务许可证有效到期日期rowHeader.CreateCell(12,CellType.String),//法人rowHeader.CreateCell(13,CellType.String),//联系人rowHeader.CreateCell(14,CellType.String)//备注});rowHeader.Cells[0].SetCellValue("名称");rowHeader.Cells[1].SetCellValue("地址");rowHeader.Cells[2].SetCellValue("电话");rowHeader.Cells[3].SetCellValue("所属药局");rowHeader.Cells[4].SetCellValue("餐饮服务许可证号");rowHeader.Cells[5].SetCellValue("状态");rowHeader.Cells[6].SetCellValue("负责人");rowHeader.Cells[7].SetCellValue("负责人电话");rowHeader.Cells[8].SetCellValue("餐饮单位类别");rowHeader.Cells[9].SetCellValue("学校");rowHeader.Cells[10].SetCellValue("餐饮服务许可证有效起始日期");rowHeader.Cells[11].SetCellValue("餐饮服务许可证有效到期日期");rowHeader.Cells[12].SetCellValue("法人");rowHeader.Cells[13].SetCellValue("联系人");rowHeader.Cells[14].SetCellValue("备注");//循环,添加数据for (int i = 1; i <= list.Count; i++){IRow r = sheet.CreateRow(i);r.Cells.AddRange(new ICell[]{r.CreateCell(0,CellType.String),//名称r.CreateCell(1,CellType.String),//地址r.CreateCell(2,CellType.String),//电话r.CreateCell(3,CellType.String),//所属药局r.CreateCell(4,CellType.String),//餐饮服务许可证号r.CreateCell(5,CellType.String),//状态r.CreateCell(6,CellType.String),//负责人r.CreateCell(7,CellType.String),//负责人电话r.CreateCell(8,CellType.String),//餐饮单位类别r.CreateCell(9,CellType.String),//学校r.CreateCell(10,CellType.String),//餐饮服务许可证有效起始日期r.CreateCell(11,CellType.String),//餐饮服务许可证有效到期日期r.CreateCell(12,CellType.String),//法人r.CreateCell(13,CellType.String),//联系人r.CreateCell(14,CellType.String)//备注});//var cs = wb.CreateCellStyle();//cs.DataFormat = wb.CreateDataFormat().GetFormat("yyyy-mm-dd HH:mm:ss");//r.Cells[2].CellStyle = cs;r.Cells[0].SetCellValue(list[i - 1].Name);r.Cells[1].SetCellValue(list[i - 1].Address);r.Cells[2].SetCellValue(list[i - 1].Phone);r.Cells[3].SetCellValue(list[i - 1].Syj.Name);r.Cells[4].SetCellValue(list[i-1].CirculationLicense);r.Cells[5].SetCellValue(list[i - 1].Status==true?"有效":"无效");r.Cells[6].SetCellValue(list[i - 1].Principal);r.Cells[7].SetCellValue(list[i - 1].PrincipalPhone);r.Cells[8].SetCellValue(list[i - 1].CateringUnitCategory.Name);r.Cells[9].SetCellValue(list[i - 1].Kindergarten!=null?list[i - 1].Kindergarten.Name:"");r.Cells[10].SetCellValue(list[i-1].StartDate);r.Cells[11].SetCellValue(list[i - 1].EndDate);r.Cells[12].SetCellValue(list[i - 1].LegalPerson);r.Cells[13].SetCellValue(list[i - 1].ContractPerson);r.Cells[14].SetCellValue(list[i - 1].Remark);}wb.Write(fs);}#endregion}catch (Exception){throw;}}</p><p&l 导入 用到了NPOI,需要的可以网上下载最新版</p><p>     </p><pre class="csharp" name="code">     [HttpPost][ValidateAntiForgeryToken]public ActionResult ImportExcelFile(HttpPostedFileBase file, FormCollection collection){var name = Path.GetFileName(file.FileName);string ExcelName = "CaterinUnit" + DateTime.Now.ToString("yyyy-MM-dd") + name;string FileImageName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings["UploadTemp"] + "UpLoadImportExcel\", ExcelName);file.SaveAs(Server.MapPath("~/UpLoadImportExcel/" + ExcelName));DataTable cateringUnitDt= RenderDataTableFromExcel(FileImageName);List<CateringUnitDto> caterings = new List<CateringUnitDto>();var result = new CateringUnitDtos { CateringUnits = new List<CateringUnitDto>() };if (cateringUnitDt.Rows.Count > 0){for (int i = 0; i < cateringUnitDt.Rows.Count; i++){CateringUnitDto catering = new CateringUnitDto();string alertlengthmsg = "";if (cateringUnitDt.Rows[i]["名称"].ToString().Length < 100){catering.Name = cateringUnitDt.Rows[i]["名称"].ToString();}else {alertlengthmsg ="名称  "+cateringUnitDt.Rows[i]["名称"].ToString()+"   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["地址"].ToString().Length < 100){catering.Address = cateringUnitDt.Rows[i]["地址"].ToString();}else {alertlengthmsg = "地址  " + cateringUnitDt.Rows[i]["地址"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["电话"].ToString().Length < 20){catering.Phone = cateringUnitDt.Rows[i]["电话"].ToString();}else {alertlengthmsg = "电话  " + cateringUnitDt.Rows[i]["电话"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["餐饮服务许可证号"].ToString().Length < 50){catering.CirculationLicense = cateringUnitDt.Rows[i]["餐饮服务许可证号"].ToString();}else {alertlengthmsg = "餐饮服务许可证号  " + cateringUnitDt.Rows[i]["餐饮服务许可证号"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["负责人"].ToString().Length < 20){catering.Principal = cateringUnitDt.Rows[i]["负责人"].ToString();}else {alertlengthmsg = "负责人  " + cateringUnitDt.Rows[i]["负责人"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["负责人电话"].ToString().Length < 20){catering.PrincipalPhone = cateringUnitDt.Rows[i]["负责人电话"].ToString();}else {alertlengthmsg = "负责人电话  " + cateringUnitDt.Rows[i]["负责人电话"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}catering.Status = cateringUnitDt.Rows[i]["是否有效"].ToString() == "1" ? true : false;catering.CateringUnitCategory.Code = cateringUnitDt.Rows[i]["餐饮单位类别"].ToString();catering.Syj.Id=((SyjUserDto)Session["user"]).Syj.Id;catering.StartDate =Convert.ToDateTime(cateringUnitDt.Rows[i]["餐饮服务许可证有效起始日期"]).ToString("yyyy-MM-dd");catering.EndDate =Convert.ToDateTime(cateringUnitDt.Rows[i]["餐饮服务许可证有效到期日期"]).ToString("yyyy-MM-dd");if (cateringUnitDt.Rows[i]["法人"].ToString().Length < 20){catering.LegalPerson = cateringUnitDt.Rows[i]["法人"].ToString();}else {alertlengthmsg = "法人  " + cateringUnitDt.Rows[i]["法人"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["联系人"].ToString().Length < 20){catering.ContractPerson = cateringUnitDt.Rows[i]["联系人"].ToString();}else {alertlengthmsg = "联系人  " + cateringUnitDt.Rows[i]["联系人"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}if (cateringUnitDt.Rows[i]["备注"].ToString().Length < 100){catering.Remark = cateringUnitDt.Rows[i]["备注"].ToString();}else {alertlengthmsg = "备注  " + cateringUnitDt.Rows[i]["备注"].ToString() + "   长度太长!";Response.Write("<script>window.parent.window.RunJS("" + alertlengthmsg + "");</script>");return View("Import");}result.TotalCount = cateringUnitDt.Rows.Count;result.CateringUnits.Add(catering);}var rq = AllRestRequst.Build(CateringUnitMethod.BatchImport, Method.POST, false);string jdto = ObjectHelper.Serialize(result);rq.AddParameter(WebAppContext.TEXTJSON, jdto, ParameterType.RequestBody);var obj = RestServiceProvider.Instance.SendRequestString<ResponseRaw<DtoResponse>>(rq, CateringUnitUrl);JsonReader jsonReader = new JsonTextReader(new StringReader(obj.ToString()));Response response = null;int count = 0;while (jsonReader.Read()){if (jsonReader.Value != null && jsonReader.Value.Equals("ResponseInstance")){count++;continue;}if (count > 0 && jsonReader.Value != null){response = JsonConvert.DeserializeObject<Response>(jsonReader.Value.ToString());}}string msg = response.BusinessException.Message;if (msg.Length > 0){var resultmsg = new ResultMsg();var alertmsg = "";string[] ms = msg.Split('&');if (ms.Count()==2){alertmsg= resultmsg.successMsg = "餐饮单位导入结果:成功" + ms[0] + "条!";Response.Write("<script>window.parent.window.RunJS("" +alertmsg + "");</script>");}else{alertmsg= resultmsg.successMsg = "餐饮单位导入结果:成功" + ms[0] + "条,失败" +ms[1]+ "条!";resultmsg.FailureMsg = ms[2];Response.Write("<script>window.parent.window.RunJS("" + alertmsg+ms[2]+ "");</script>");}}}return View("Import");}/// <summary>/// 将excel数据读到表中/// </summary>/// <param name="path"></param>/// <returns></returns>public static DataTable RenderDataTableFromExcel(string path){DataTable dt = new DataTable();IWorkbook workbook;ISheet sheet = null;try{using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read)){// 2007版本if (path.IndexOf(".xlsx") > 0){workbook = new XSSFWorkbook(file);sheet = workbook.GetSheetAt(0);System.Collections.IEnumerator rows = sheet.GetRowEnumerator();IRow headerRow = sheet.GetRow(0);int cellCount = headerRow.LastCellNum;for (int j = headerRow.FirstCellNum; j < cellCount; ++j){ICell cell = headerRow.GetCell(j);if (cell != null){string cellValue = cell.StringCellValue.Trim();if (cellValue != null){DataColumn column = new DataColumn(cellValue);dt.Columns.Add(column);}}}for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; ++i){IRow row = sheet.GetRow(i);if (row == null) continue;DataRow dataRow = dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; ++j){if (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString().Trim();}dt.Rows.Add(dataRow);}}// 2003版本else if (path.IndexOf(".xls") > 0){workbook = new HSSFWorkbook(file);sheet = workbook.GetSheetAt(0);System.Collections.IEnumerator rows = sheet.GetRowEnumerator();IRow headerRow = sheet.GetRow(0);int cellCount = headerRow.LastCellNum;for (int j = headerRow.FirstCellNum; j < cellCount; ++j){ICell cell = headerRow.GetCell(j);if (cell != null){string cellValue = cell.StringCellValue.Trim();if (cellValue != null){DataColumn column = new DataColumn(cellValue);dt.Columns.Add(column);}}}for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++){IRow row = sheet.GetRow(i);DataRow dataRow = dt.NewRow();for (int j = row.FirstCellNum; j < cellCount; j++){if (row.GetCell(j) != null)dataRow[j] = row.GetCell(j).ToString().Trim();}dt.Rows.Add(dataRow);}}}return dt;}catch (Exception ex){Console.WriteLine("Exception: " + ex.Message);return null;}}

3.动态合并单元格

 

        $(function () {ElementById("td"), 1, 0);});//合并单元格并动态修改高度function autoRowSpan(tb, row, col) {var lastValue = "";var cvalue = "";var pos = 1;for (var i = row; i &ws.length-1; i++) {cvalue &#ws[i].cells[0].getElementsByTagName("INPUT")[0].value;if (lastValue == cvalue) {tb.rows[i].deleteCell(col);tb.rows[i - pos].cells[col].rowSpan = tb.rows[i - pos].cells[col].rowSpan + 1;pos++;if (i == tb.rows.length-2) {tb.rows[i - pos+1].cells[0].getElementsByTagName("INPUT")[1].style.height = 22 * pos + "px";}} else {if (i > pos) {tb.rows[i - pos].cells[0].getElementsByTagName("INPUT")[1].style.height = 23 * pos + "px";}lastValue = cvalue;pos = 1;}}}

 

4. input 标签只读,之前总是disable

//a 为一个checkbox

        function changeShort(a) {if (a.checked) {var preInput = (a.id).split('-')[1];$("#ResultPoint-" + preInput).val(" ");ElementById("ResultPoint-" + preInput).readOnly = true;} else {var preInput = (a.id).split('-')[1];ElementById("ResultPoint-" + preInput).readOnly = false;}}


5.批量设置checkbox的value

        function setMaintainRatio() {var fields;$(':checkbox:checked').each(function () {var txt = $("input[name='isshortList']");fields = ($(':checkbox').map(function () {if (this.checked)return "true";elsereturn "false";}).get().join(","));$(txt).val(fields);});}


6.递归实现treeJSON

 

        public List<NewsClassJson> LinqJsonTree(long  parentId){var rq = AllRestRequst.Build(SyjMethod.GetListBySyjCode, Method.GET, false);rq.AddParameter("syjCode", ((SyjUserDto)Session["User"]).Syj.Code);var obj = RestServiceProvider.Instance.SendRequest<ResponseRaw<SyjDtos>>(rq, SyjUrl);List<SyjDto>classlist = obj.GetEntity().Syjs.Where(x => x.ParentId == parentId).ToList();List<NewsClassJson> jsonData = new List<NewsClassJson>();classlist.ForEach(item =>{jsonData.Add(new NewsClassJson{id = item.Id,children = LinqJsonTree(item.Id),ParentId = item.ParentId,text = item.Name,});});return jsonData;}





 

 

本文发布于:2024-01-30 16:36:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660381821380.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:笔记   网站
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23