View-ForumsGroupView.ascx 读解
为了修改首页的框架,一路跟踪到了View-ForumsGroupView.ascx这个文件,其实他就是一个页面的模版,微软在这里并没有弄了太多花絮,所以阅读起来很方便。
<%@ Control Language="C#" %>
<%@ Register TagPrefix="Forums" Namespace="AspNetForums.Controls" Assembly="AspNetForums.Controls" %>
<%@ Import Namespace="AspNetForums" %>
<%@ Import Namespace="AspNetForums.Controls" %>
<%@ Import Namespace="AspNetForums.Components" %>
导入了一些名称空间,并且声明了一个控件。
<Forums:Ads Zone="Inline" runat="server" />
注释上显示是广告,我个人理解为登入框上面的banner。
<% if ( Users.GetUser().IsAnonymous ) { %>
<table width="100%" cellspacing="0" cellpadding="5" border="0">
<tr>
<td>
<!-- ForumGroupView.Header.End -->
<Forums:Login SkinFilename="Skin-LoginSmall.ascx" runat="server" ID="Login1" />
<!-- ForumGroupView.MainCentent.Start -->
</td>
</tr>
</table>
<% } %>
匿名用户显示的表格,感觉和动网的有些类似。
<table width="100%" cellpadding="5" cellspacing="0">
<tr>
<td valign="bottom" colspan="2">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="txt4" align="left" nowrap>
<Forums:DisplayUserWelcome runat="server" />
</td>
<td class="txt4" align="right" valign="bottom" nowrap>
<% if ( !Users.GetUser().IsAnonymous ) { %>
<a class="lnk3" href="<%=Globals.GetSiteUrls().MyFavorites%>">
<%=ResourceManager.GetString("MyFavorites_Description")%>
</a>
<br />
<!--<Forums:MarkAllRead runat="server" ID="Markallread1"/>-->
<% } %>
<Forums:ForumAnchor class="lnk3" AnchorType="PostsActive" runat="server" /><br />
<Forums:ForumAnchor class="lnk3" AnchorType="PostsUnanswered" runat="server" /><br />
</td>
</tr>
<tr>
<td align="left">
<Forums:BreadCrumb ShowHome="true" runat="server" ID="Breadcrumb1" />
</td>
<td align="right" class="txt4">
<Forums:SearchRedirect ID="SearchRedirect" runat="server" />
</td>
</tr>
</table>
</td>
</tr>
</table>
这个就是登入以后所显示的表格。
下面就是论坛组的显示了,我们公司就是要我修改这里,所以准备一点一点分析。
<asp:Repeater EnableViewState="false" runat="server" id="forumGroupRepeater">
定义了一个Repeater控件,用来显示整个论坛组框架。
<HeaderTemplate>
<!-- ********* Repeater.Header.Start ************* //-->
<table width="100%" class="tableBorder" cellpadding="4" cellspacing="1">
<tr>
<td colspan="2" class="column" align="center" width="*"><% = ResourceManager.GetString("ForumGroupView_Inline1") %></td>
<td class="column" align="center" width="177" nowrap><%= ResourceManager.GetString("ForumGroupView_Inline4") %></td>
<td class="column" align="center" width="65" nowrap><%= ResourceManager.GetString("ForumGroupView_Inline2") %></td>
<td class="column" align="center" width="65" nowrap><%= ResourceManager.GetString("ForumGroupView_Inline3") %></td>
</tr>
</table>
<!-- ********* Repeater.HeaderTemplate.End ************* //-->
</HeaderTemplate>
定义了头模板,ResourceManager.GetString(),让我看了很长时间,个人以为是整理了一下字符串,然后又从配置里面把数据读出,从Language目录里的Resources.xml读出数据。
<td class="fh1" colspan="5" valign="bottom">
<asp:ImageButton ID="ExpandCollapse" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ForumGroupID") %>' ImageUrl='<%# Formatter.ExplandCollapseIcon( (ForumGroup) Container.DataItem ) %>' ToolTip='<%# ResourceManager.GetString("ForumGroupView_ExpandCollapse")%>' Runat="server"/> <a href="<%# Globals.GetSiteUrls().ForumGroup ( (int) DataBinder.Eval(Container.DataItem, "ForumGroupID")) %>"><%# DataBinder.Eval(Container.DataItem, "Name") %></a>
</td>
这个表格显示了一个图片和论坛组的名字。
<Forums:ForumRepeater ForumGroupID='<%# DataBinder.Eval(Container.DataItem, "ForumGroupID") %>' HideForums='<%# DataBinder.Eval(Container.DataItem, "HideForums") %>' runat="server">
这是一个自定义的Repeater控件,具体代码还没研究过。
<td class="f1" width="20">
<%# Formatter.StatusIcon( (Forum)Container.DataItem ) %>
</td>
这个是显示版面是否有信息的那个图片。
<Forums:ForumLogo runat="server" Forum='<%# (Forum) Container.DataItem %>' />
这个是版面的logo,如果有就显示,没有就不显示,都在ForumsRepeater控件里都有了。
<b><a href="<%# Globals.GetSiteUrls().Forum( ((Forum) Container.DataItem).ForumID ) %>">
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</a></b>
<%# Formatter.FormatUsersViewingForum( (Forum) Container.DataItem ) %>
<br />
这个很容易理解,就是版面名字的显示,<%# Formatter.FormatUsersViewingForum( (Forum) Container.DataItem ) %>
是显示版面现在的在线人数,很多余的东西,缓存太久了,根本不能及时显示。
<span class="txt5"></span><%# DataBinder.Eval(Container.DataItem, "Description") %><%# Formatter.FormatSubForum( (Forum) Container.DataItem ) %></span>
<br />
<forums:ForumModerators runat="server" ForumID='<%# ((Forum)Container.DataItem).ForumID %>'/>
版面的简介和版主显示
<td class="fh3" align="center" width="175">
<%# Formatter.FormatLastPost( (Forum) Container.DataItem, (bool) true ) %>
</td>
<td class="fh3" align="center" width="64">
<%# Formatter.FormatNumber( ((Forum) Container.DataItem).TotalThreads ) %>
</td>
<td class="fh3" align="center" width="65">
<%# Formatter.FormatNumber( ((Forum) Container.DataItem).TotalPosts ) %>
</td>
这三个分别显示:最后帖子,主题数,帖子数的。
好了,后面都是一些闭合语句了。
分析完毕,现在修改起来也简单了,以后研究的时候会继续贴上来的,嘿嘿
版面的简介和版主显示 这三个分别显示:最后帖子,主题数,帖子数的。好了,后面都是一些闭合语句了。分析完毕,现在修改起来也简单了,以后研究的时候会继续贴上来的,嘿嘿
- 浅谈几种SLB技术的实现
- 史上最逼真人形机器人堪比健身教练,技能满满还会流汗
- 被监管前的疏忽?互联网金融大面积逾期,中介行为不容忽视
- 达尔文漏算的一步却让它填补,科学家认为人类最初认可的进化论不再适用
- 假如黑客攻击您的互联网汽车会怎么样?
- 享学课堂谈-Python初学者的设计模式入门
- 本体网络Ontology Zero入选国家工信部区块链开源项目计划
- 完全无人驾驶将首先在中国大城出现
- 榴莲售出的三拼域名ancaiyun.com 已建站
- 微信提现免费!申请微信免费提现的教程
- 程序员也是天文学家?利用机器学习寻找行星
- python及numpy,pandas易混淆的点
- 也许 vue+css3 做交互特效更简单
- 2017年你不可不知的十大黑科技!涨见识!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- php7 图形用户界面GUI 开发示例
- Django开发的简易留言板案例详解
- php使用redis的有序集合zset实现延迟队列应用示例
- PHP使用openssl扩展实现加解密方法示例
- php使用redis的几种常见操作方式和用法示例
- 使用memory_profiler监测python代码运行时内存消耗方法
- php 多进程编程父进程的阻塞与非阻塞实例分析
- php数组指针函数功能及用法示例
- thinkphp5框架路由原理与用法详解
- ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
- php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
- 对python 命令的-u参数详解
- ThinkPHP5.1+Ajax实现的无刷新分页功能示例
- Python推导式简单示例【列表推导式、字典推导式与集合推导式】
- Python 从相对路径下import的方法