技术开发 频道

用ASP.NET3.5开发SNS:用户接口页面设计

  下面给出主页Home.aspx文件的标记代码,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.aspx.cs" Inherits="BLOGO.NET.View.Pages.Home" MasterPageFile="~/View/Masters/Page.Master" EnableViewState="False" %>
<%@ Register src="../Controls/BlogList.ascx" tagname="BlogList" tagprefix="uc1" %>
<asp:content id="ContentPlaceHolder" contentplaceholderid="ContentPlaceHolderPage" runat="server">
    
<form id="form" runat="server">
    
<div class="post">
    
<h3><asp:Label id="lblTitle" runat="server"></asp:Label></h3>
    
</div>
    
<uc1:BlogList ID="BlogList" runat="server" />
    
<asp:ObjectDataSource ID="ObjectDataSourceBlogs" runat="server"
        OldValuesParameterFormatString
="original_{0}" SelectMethod="GetList"
        
TypeName="BLOGO.NET.Business.BlogEntryManager" EnablePaging="True" SelectCountMethod="Count" StartRowIndexParameterName="StartRow" MaximumRowsParameterName="PageSize" EnableCaching="False" EnableViewState="False">
        
<SelectParameters>
            
<asp:QueryStringParameter Name="StartRow" QueryStringField="page"
                Type
="Int32" />
            
<asp:Parameter DefaultValue="3" Name="PageSize" Type="Int32" />
        
</SelectParameters>
    
</asp:ObjectDataSource>
    
</form>
</asp:content>

  由于我们重用了BlogList控件并继承了母版页面,所以你会注意到其中仅使用了几行标记代码,并且大多数的标记代码结果都仅仅使用了配置方式,而不是编码方式。

  上面解释的有关页面Home.aspx的工作方式与本系统中创建的如下几个博客页面非常类似:

  BlogArticles.aspx。这个页面列出所有的标记为类型“article”的博客入口。

  BlogByMonth.aspx。这个页面列出满足所有指定月份的博客入口。

   BlogByTag.aspx。这个页面列出相应于一个指定标签的所有的博客入口。

  在每一个页面中唯一不同的是ObjectDataSource控件的配置方式—从业务逻辑层选择适当的GetList重载,并且使用相应的经常是来自于querystring值的过滤参数,以及可能的header标签。因此,我们不再解释这些页面,但推荐读者自行分析之(位于View/Pages文件夹下)。

  在介绍了博客概要信息相关页面后,还存在另外几个页面需要了解一下。

  设计博客入口页面—BlogEntry.aspx

  这个页面根据querystring指定的ID值显示一个特定的博客入口或文章。该页面使用一个ListView和ObjectDataSource来显示博客入口。因为每一个博客入口都可以看作是一个长度为1的列表,所以使用ListView控件来展示之是合适的。而且,这能够使我们重用我们的Web用户控件BlogList中的大量标记。既然在所有的情况下我们在这个页面上仅显示一个博客入口,所以就取消了分页支持。

  紧接着上面的控件,页面中添加了另一对ListView控件和ObjectDataSource控件—此控件与业务逻辑层的CommentManager类相关联。作为输入参数,这里使用了唯一的标识博客入口的querystring参数ID,以便检索和显示仅仅与该博客入口相应的评论。

  页面的最下面显示的是一个子表单,用于提供给用户针对当前博客入口提交新的评论内容。这个表单是使用标准ASP.NET Web控件构建的,例如TextBox控件,按钮控件以及强制进行输入域校验的RequiredFieldValidator控件。该新的评论表单使用一个PlaceHolder控件包围起来。这可以使我们能够在运行时刻根据需要启用或禁止使用它。这是非常有必要的,因为博客系统管理员可能会决定每一个博客入口是否允许予以添加评论。在表单的Page_Load事件中包含了这一代码,通过使用PlaceHolder控件的Visible属性值动态地控制显示或者隐藏这个新的评论子表单。

0
相关文章