cms .net webform去服务器控件标签化 pagebase新版本
这是最近在干一个webform的cms的时候用起来的,原来虽然做过很多技术,什么remoting,wcf,webservice,可是弄来弄去,最后也没个收藏的地儿,全都放在笔记本儿上了,可是人又懒地可以,做来做去,最后它们还是扔在那里
。
说正题吧:最近用到的这套小型的cms,主就是用的链表了,大部分的栏目都在同一张表里,而这张表囊括了几乎所有需要用到的字段,包括图片,内容,一堆乱七八糟的东西,这样做的时候主要就是读这一张表,所以这里做的时候主要就是把配置给抽出来。封装的
作用一直都最关键在委托的使用上,从2.0开始,喜欢用委托,可是手写一个又太麻烦从4.0开发就一直用扩展方法和ACTION FUNC等委托,好 好几年未认真写,如今用来还真的是得心应手。表达思想表达地比较迅速,也容量写好。对于一个对代码有追求的人。应该 using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Contexts;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using JGDJWeb.Helper;
using JGDJWeb.Model; namespace JGDJWeb.Extensions {
public class PageBase : System.Web.UI.Page {
protected PageBase() {
} protected void InitPage() {
if (!IsPostBack) {
BindModule(this, (a, b) => { BindSingleModules(this, b, a); });
}
} protected void BindSingleModules(Page page, string suffix, Repeater a) {
using (var context = new JGDJEntities()) {
switch (suffix) {
case "jgxx": //机关快讯
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "机关讯息", context, a, 8, () => { }));
break;
case "tpxw": //机关快讯
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "图片新闻", context, a, 8, () => { }));
break; case "gwdt": //工委动态
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "工委动态", context, a, 8, () => { }));
break; case "topywa": //要闻
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "要闻", context, a, 2, () => { }));
break; case "topywb": //要闻
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "工委动态", context, a, 3, () => { }));
break;
case "gsgg": //公示公告
BindGsggList(context, a);
break;
case "gbrm": //干部任免
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "干部任免", context, a, 8, () => { }));
break;
case "djbd": //党建宝典
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "党建宝典", context, a, 4, () => { }));
break;
case "rdjj": //热点聚焦
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "机关讯息", context, a, 7, () => { }));
break;
case "dyyzh": //党员驿站
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "党员驿站", context, a, 4, () => { }));
break; case "qtfc": //群团风采
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "群团风采", context, a, 4, () => { }));
break;
case "dflzh": //党风廉政
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "工委动态", context, a, 6, () => { }));
break;
case "sxdzzhjsh": //三党组织建设
BindSingleModuleFromNewsClass(new BindSingleModuleFromNewsClassParams(page, suffix, "工委动态", context, a, 6, () => { }));
break;
case "pic": //焦点图幻灯
BindPics(context, a, 3);
break; default:
break;
}
}
} public class BindSingleModuleFromNewsClassParams {
private Page _page;
private string _suffix;
private string _classCName;
private JGDJEntities _context;
private Repeater _a;
private int _takeCount;
private Action _doAlternative; public BindSingleModuleFromNewsClassParams(Page page, string suffix, string classCName, JGDJEntities context, Repeater a, int takeCount, Action doAlternative) {
_page = page;
_suffix = suffix;
_classCName = classCName;
_context = context;
_a = a;
_takeCount = takeCount;
_doAlternative = doAlternative;
} public Page Page {
get { return _page; }
} public string Suffix {
get { return _suffix; }
} public string ClassCName {
get { return _classCName; }
} public JGDJEntities Context {
get { return _context; }
} public Repeater A {
get { return _a; }
} public int TakeCount {
get { return _takeCount; }
} public Action DoAlternative {
get { return _doAlternative; }
}
} protected void BindSingleModuleFromNewsClass(BindSingleModuleFromNewsClassParams bindSingleModuleFromNewsClassParams) { try {
string jgkxNo = bindSingleModuleFromNewsClassParams.Context.JY_News_Classs.Single(n => n.ClassCName == bindSingleModuleFromNewsClassParams.ClassCName).ClassNo;
jgkxNo = Encrypt.MD5Encrypt(jgkxNo);
List<JY_Newss> newss = Common.GetNewsListByCNo(jgkxNo).OrderByDescending(u => u.CreateTime).ToList();
var news = newss.First();
var newsPicFirst = newss.FirstOrDefault(u => u.PicURL != null); bindSingleModuleFromNewsClassParams.A.DataSource = newss.Where(n => n.NewsID != news.NewsID).Take(bindSingleModuleFromNewsClassParams.TakeCount);
bindSingleModuleFromNewsClassParams.A.DataBind();
var prefixArray = new String[] { "More_", "Link_", "P_", "A_", "Img_", "H_" }; prefixArray.ToList().ForEach(t => {
switch (t) {
case "More_":
case "Link_":
var anchor = bindSingleModuleFromNewsClassParams.Page.FindControl(t + bindSingleModuleFromNewsClassParams.Suffix) as HtmlAnchor;
if (anchor != null) {
if (anchor.InnerHtml == "") anchor.InnerHtml = news.NewsTitle;
anchor.HRef = "/List.aspx?ClassNo=" +
Encrypt.MD5Encrypt(news.ClassNo);
}
break; case "A_": if (newsPicFirst != null) {
var alink = bindSingleModuleFromNewsClassParams.Page.FindControl(t + bindSingleModuleFromNewsClassParams.Suffix) as HtmlAnchor;
if (alink != null) {
if (alink.InnerHtml == "") alink.InnerHtml = news.NewsTitle;
alink.HRef = "/Detail.aspx?ClassNo=" +
Encrypt.MD5Encrypt(newsPicFirst.ClassNo);
}
}
break;
case "P_":
case "H_":
var p =
bindSingleModuleFromNewsClassParams.Page.FindControl(t +
bindSingleModuleFromNewsClassParams
.Suffix) as
HtmlGenericControl;
if (p != null)
p.InnerHtml = news.Contents.NoHtml().ToTitleString(50);
break;
case "Img_": if (newsPicFirst != null) {
var img =
bindSingleModuleFromNewsClassParams.Page.FindControl(t +
bindSingleModuleFromNewsClassParams
.Suffix) as
HtmlImage;
if (img != null)
img.Src = newsPicFirst.PicURL;
}
break;
case "ImgTitle_": if (newsPicFirst != null) {
var img =
bindSingleModuleFromNewsClassParams.Page.FindControl(t +
bindSingleModuleFromNewsClassParams
.Suffix) as
HtmlGenericControl;
if (img != null)
img.InnerHtml = newsPicFirst.NewsTitle.ToTitleString(15);
}
break; default:
break; }
});
bindSingleModuleFromNewsClassParams.DoAlternative();
} catch (Exception ex) {
}
}
protected void BindGsggList(JGDJEntities context, Repeater a) {
try {
var list =
context.IM_AnnounceNotices.Where(c => c.BEGIN_DATE <= DateTime.Now)
.OrderByDescending(u => u.SEND_TIME)
.Take(5)
.ToList();
a.DataSource = list;
a.DataBind();
} catch (Exception ex) {
}
} protected static void BindPics(JGDJEntities context, Repeater a, int takenCount) {
try {
//获取所有已经通过审核的新闻,并且新闻属性不能为空,为了方便使用Linq找出具有幻灯属性的新闻,所以取出全部新闻然后过滤
var newsList =
context.JY_Newss.Where(t => t.JY_NewsClass.Any(nc => nc.IsPass == 1) && t.NewsProperty != null).ToList();
//过滤具有幻灯属性的新闻,并取得最新的5条记录
var newsTOP5 =
newsList.Where(c => c.NewsProperty.Split(',')[3] == "1").OrderByDescending(t => t.NewsID).Take(takenCount).ToList();
a.DataSource = newsTOP5;
a.DataBind();
} catch (Exception ex) {
}
} protected void BindModule(Page page, Action<Repeater, string> bindSingRpt) {
using (var context = new JGDJEntities()) BindControls(page, "List_", bindSingRpt);
} protected void BindControls(Page page, String prefix, Action<Repeater, string> bindSingControl) {
var controlList = page.Controls;
if (page.Master != null) {
var container = page.Master.FindControl("ContentPlaceHolder1") as ContentPlaceHolder;
if (container != null)
controlList = container.Controls;
}
foreach (Control control in controlList) {
if (control.ID != null && control.ID.StartsWith(prefix) && control is Repeater) {
var suffix = control.ID.Split('_')[1];
if (prefix == "List_")
bindSingControl(control as Repeater, suffix);
}
}
} protected void Bind(string className, HtmlAnchor anchor, Repeater repeater, int count) {
try {
using (var context = new JGDJEntities()) {
var classNo = context.JY_News_Classs.Where(n => n.ClassCName == className).First().ClassNo;
var newss = Common.GetNewsListByCNo(Encrypt.MD5Encrypt(classNo)); if (anchor != null) {
anchor.HRef = "/List.aspx?ClassNo=" + Encrypt.MD5Encrypt(classNo);
}
repeater.DataSource = newss.Take(count);
repeater.DataBind();
}
} catch (Exception e) { }
} #region 网站访问量
protected void pageviews() {
int count = 0;
//数据累加
int Stat = 0;
StreamReader srd;
//取得文件的实际路径
string file_path = Server.MapPath("/XML/counter.txt");
//打开文件进行读取
srd = File.OpenText(file_path);
while (srd.Peek() != -1) {
string str = srd.ReadLine();
count = int.Parse(str);
}
srd.Close(); // 在新会话启动时运行的代码
Application.Lock(); //获取Application对象中保存的网站总访问量
Stat = count;
Stat += 1;
object obj = Stat;
Application["counter"] = obj;
//将数据记录写入文件
StreamWriter srw = new StreamWriter(file_path, false);
srw.WriteLine(Stat);
srw.Close();
Application.UnLock();
}
#endregion
}
}
cms .net webform去服务器控件标签化 pagebase新版本的更多相关文章
- 初探React,将我们的View标签化
前言 我之前喜欢玩一款游戏:全民飞机大战,而且有点痴迷其中,如果你想站在游戏的第一阶梯,便需要不断的练技术练装备,但是腾讯的游戏一般而言是有点恶心的,他会不断的出新飞机.新装备.新宠物,所以,很多时候 ...
- MaidSafe.net,一个完全去中心的化的云存储系统
MaidSafe.net,一个完全去中心的化的云存储系统 (类似Bitcloud系统) 本帖最后由 tbit 于 2014-3-26 16:11 编辑 已经开发了8年,最近即将推出测试和IPO.开放源 ...
- 让资源管理器变得像Chrome一样标签化
让资源管理器变得像Chrome一样标签化 前段时间WIn10开发者预览版发布了更新通知,其中一个主要特性就是给资源管理器添加了标签化的功能. 习惯了各种浏览器便捷的标签化管理,早就想要这个实用的功能了 ...
- 音频标签化3:igor-8m项目的训练、评估与测试
上一节介绍了youtube-8m项目,这个项目以youtube-8m dataset(简称8m-dataset)样本集为基础,进行训练.评估与测试.youtube-8m设计用于视频特征样本,但实际也适 ...
- 音频标签化2:youtube-8m项目的训练、评估与测试
之前小程介绍了使用机器学习的办法来解决"音频标签化"的问题,并且提到了训练样本audioset跟youtube-8m的dataset,而训练模型上也提到了youtube-8m的模型 ...
- 音频标签化1:audioset与训练模型 | 音频特征样本
随着机器学习的发展,很多"历史遗留"问题有了新的解决方案.这些遗留问题中,有一个是音频标签化,即如何智能地给一段音频打上标签的问题,标签包括"吉他"." ...
- 对输入字符进行HTML转义 OR 去HTML标签
/** * 对输入字符进行HTML转义 * @param mixed $data */ public static function escape($data) { if(is_array($data ...
- 使用一个CSS Class去给标签定义Style
使用一个CSS Class去给标签定义Style 类是可重用的样式,可以添加到HTML元素. 下面是一个CSS类声明的例子: <style> .blue-text { colo ...
- jsoup获取标签下的文本(去除子标签的)
jsoup获取标签下的文本(去除子标签的) <pre name="code" class="java">Element content=doc.se ...
随机推荐
- 易语言制作的QQ聊天中常用的GIF图片【带源码下载】
该软件调用网页实现表情包制作,使用了精益模块. 最近比较火的王境泽.张学友.切格瓦拉.为所欲为.今天星期五.黑人问号脸.偷电瓶车.诸葛孔明.金坷垃等都可以通过此软件在线制作属于你的表情包. 太困了懒得 ...
- 使用命令行设置MySql编码格式
使用命令行设置MySql编码格式 1.登录mysql 2.输入 SHOW VARIABLES LIKE 'character_set_%'; 3.查看 value值是否为utf8,如果不是,则使用SE ...
- 笔记-git-协作开发
笔记-git-协作开发 1. git协作开发 git协作的典型做法是,创建一个git服务器,被多个人操作. 示意图如下: 一般来说协作分为如下几个步骤: 创建一个git裸服务器 (git i ...
- centos 6.X 关闭selinux
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.在这种访问控制体系的限制下,进程只能访问那 ...
- SSH集成cxf 发布restful webservice
首先讲一下什么是restful webservice ,这个问题网上一搜有很多博文去长篇大论的介绍它,但是最后你看完了也会觉得云里雾里的,所以我在这里简单的讲一下我理解的rest webservice ...
- PICT:基于正交法的软件测试用例生成工具
成对组合覆盖这一概念是Mandl于1985年在测试Aad编译程序时提出来的.Cohen等人应用成对组合覆盖测试技术对Unix中的“Sort”命令进行了测试.测试结果表明覆盖率高达90%以上.可见成对组 ...
- [转]JS获取URL传参方法
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- scrapy爬取图片并自定义图片名字
1 前言 Scrapy使用ImagesPipeline类中函数get_media_requests下载到图片后,默认的图片命名为图片下载链接的哈希值,例如:它的下载链接是http://img.iv ...
- 编译caffe遇到的问题
1. failed to see hdf5.h https://askubuntu.com/questions/629654/building-caffe-failed-to-see-hdf5-h 2 ...
- 【转】Unity3D 关于贝赛尔曲线,平滑曲线,平滑路径,动态曲线
http://tieba.baidu.com/p/2460036481 很多时候我们需要的并不是直线和折线,而是平滑的曲线,比如寻路系统,某些物体的曲线运动,都需要平滑曲线来保证效果,今天试了一下,通 ...