ASP.NET程序编写注意 (转载)

Posted on 2006-08-18 17:18  方舟  阅读(302)  评论(0编辑  收藏  举报
 

 

1.各个输入文本框添加是否为空的判断,不可为空;

 

2.注意尽量符合命名规范;

 

3.尽量做好注释,方便程序阅读和以后的修改;

 

4.做好上传文件大小的限制;

 

5.在编写前台代码时加上注释头文件,以方便二次修改;

 

6.注意每个页面的title;

 

7.注意前台显示字符串长度;

 

8.需要输出显示时间的存储过程请将时间如下输出:

 

CONVERT(varchar(10),AddTime,120) AS AddTime;

 

9.需要在前台显示标题的存储过程,如果可能出现标题过长,导致页面变形的情况的话,可用如下存储过程输出文章标题

 

case

 

when len(NewsTitle)>20 then left(NewsTitle,20)+'...'

 

when len(NewsTitle)<21 then NewsTitle

 

end

 

AS NewsTitle;

 

或在前台输出时控制字数多少。

 

10.注意输入标题的长度限制

 

11.注意表格的强制换行

 

12.写类似添加或修改的存储过程时注意被添加或修改的数据是否在表中已存在,如果已存在,则提示已有该数据,通过存储过程返回值来判断。

 

13.为了维护方便起见,能在前台写的东西不要放到程序里去生成。比如链接、表格等...

 

14.进行字符(反)替换,按原样显示。

 

15.DataGrid选定列特殊样式显示。

 

If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then

 

       e.Item.Attributes.Add("onmouseover", "this.style.backgroundColor='#E4EDF9'")

 

       e.Item.Attributes.Add("onmouseout", "this.style.backgroundColor='#F1F3F5'")

 

End If

 

16.用以下样式显示分页效果

 

第 页/共 页 本页 条/共 条 首页 上一页 下一页 尾页

 

前台代码如下:

 

<asp:panel id="pnlPage" runat="server">

 

<asp:Label id="lblPage" runat="server"></asp:Label>

 

<asp:linkbutton id="lbtnFirst" onclick="LBtnNavigation_Click" runat="server" CommandName="First">首页</asp:linkbutton>

 

<asp:linkbutton id="lbtnPrev" onclick="LBtnNavigation_Click" runat="server" CommandName="Prev">上一页</asp:linkbutton>&nbsp;

 

<asp:linkbutton id="lbtnNext" onclick="LBtnNavigation_Click" runat="server" CommandName="Next">下一页</asp:linkbutton>&nbsp;

 

<asp:linkbutton id="lbtnLast" onclick="LBtnNavigation_Click" runat="server" CommandName="Last">尾页</asp:linkbutton>&nbsp;

 

      转到

 

<asp:TextBox id="txtToPage" runat="server" Width="25px" Height="20px" MaxLength="9"></asp:TextBox>页

 

<asp:LinkButton id="lbnGO" runat="server">GO</asp:LinkButton>&nbsp;&nbsp;

 

<asp:dropdownlist id="dlstPage" runat="server" AutoPostBack="True">

 

<asp:ListItem Value="10">每页显示10条</asp:ListItem>

 

<asp:ListItem Value="20" Selected="True">每页显示20条</asp:ListItem>

 

<asp:ListItem Value="50">每页显示50条</asp:ListItem>

 

<asp:ListItem Value="100">每页显示100条</asp:ListItem>

 

</asp:dropdownlist></asp:panel>

 

后台代码如下:

 

        Dim pageCount As Integer '总页数

 

        Dim recordCount As Integer '总条数

 

    

 

#Region " 绑定分页 "

 

        Protected Sub BindData(ByVal DsetData As System.Data.DataSet)

 

            '获取当前的总记录条数

 

            recordCount = DsetData.Tables(0).Rows.Count

 

            '获取当前的页数

 

            pageCount = CInt(Math.Ceiling(recordCount * 1.0 / dgrdRegister.PageSize))

 

            '避免纪录从有到无时,并且已经进行过反页的情况下CurrentPageIndex > PageCount出错

 

            If recordCount = 0 Then

 

                dgrdRegister.CurrentPageIndex = 0

 

            ElseIf dgrdRegister.CurrentPageIndex >= pageCount Then

 

                dgrdRegister.CurrentPageIndex = pageCount - 1

 

            End If

 

            NavigationStateChange()

 

        End Sub

 

        '初始化页码按钮

 

        Protected Sub NavigationStateChange()

 

            If recordCount <= dgrdRegister.PageSize Then '( RecordCount <= PageSize )//小于等于一页

 

                lbtnFirst.Enabled = False

 

                lbtnPrev.Enabled = False

 

                lbtnNext.Enabled = False

 

                lbtnLast.Enabled = False

 

            Else '有多页

 

                If dgrdRegister.CurrentPageIndex = 0 Then '当前为第一页

 

                    lbtnFirst.Enabled = False

 

                    lbtnPrev.Enabled = False

 

                    lbtnNext.Enabled = True

 

                    lbtnLast.Enabled = True

 

                ElseIf dgrdRegister.CurrentPageIndex = pageCount - 1 Then '当前为最后页

 

                    lbtnFirst.Enabled = True

 

                    lbtnPrev.Enabled = True

 

                    lbtnNext.Enabled = False

 

                    lbtnLast.Enabled = False

 

                Else '中间页

 

                    lbtnFirst.Enabled = True

 

                    lbtnPrev.Enabled = True

 

                    lbtnNext.Enabled = True

 

                    lbtnLast.Enabled = True

 

                End If

 

            End If

 

 

 

            Dim intPageCount As Integer

 

            Dim intPageIndex As Integer

 

            Dim intPageSize As Integer

 

            Dim intRecordCount As Integer

 

 

 

            If recordCount = 0 Then '当没有纪录时DataGrid.PageCount会显示1页

 

                intPageCount = 0

 

                intPageIndex = 0

 

                intPageSize = 0

 

                intRecordCount = 0

 

            Else

 

                intPageCount = pageCount

 

                intPageIndex = dgrdRegister.CurrentPageIndex + 1 '在有页数的情况下前台显示页数加1

 

                If intPageIndex = pageCount Then

 

                    intPageSize = recordCount - (pageCount - 1) * dgrdRegister.PageSize

 

                Else

 

                    intPageSize = dgrdRegister.PageSize

 

                End If

 

                intRecordCount = recordCount

 

            End If

 

 

 

            lblPage.Text = "第" & intPageIndex & "页/共" & intPageCount & "页 本页" & intPageSize & "条/共" & intRecordCount & "条"

 

 

 

        End Sub

 

        '翻页

 

        Protected Sub LBtnNavigation_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

 

 

 

            Dim btn As LinkButton = CType(sender, LinkButton)

 

            Select Case btn.CommandName

 

                Case "First"

 

                    dgrdRegister.CurrentPageIndex = 0

 

                Case "Prev" 'if( PageIndex > 0 )

 

                    dgrdRegister.CurrentPageIndex = dgrdRegister.CurrentPageIndex - 1

 

                Case "Next" 'if( PageIndex < PageCount -1)

 

                    dgrdRegister.CurrentPageIndex = dgrdRegister.CurrentPageIndex + 1

 

                Case "Last"

 

                    dgrdRegister.CurrentPageIndex = dgrdRegister.PageCount - 1

 

            End Select

 

            LoadData()

 

        End Sub

 

        '分页

 

        Private Sub dlstPage_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dlstPage.SelectedIndexChanged

 

            dgrdRegister.PageSize = CInt(dlstPage.SelectedValue)

 

            txtToPage.Text = ""

 

            dgrdRegister.CurrentPageIndex = 0

 

            LoadData()

 

        End Sub

 

        '跳转页

 

        Private Sub lbnGO_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbnGO.Click

 

            Dim ToPage As Integer

 

            If txtToPage.Text.Trim <> "" Then

 

                If IsNumeric(txtToPage.Text) Then

 

                    ToPage = CInt(txtToPage.Text.Trim)

 

                    If ToPage <= pageCount Then

 

                        Try

 

                            dgrdRegister.CurrentPageIndex = ToPage - 1

 

                            LoadData()

 

                        Catch ex As Exception

 

                            Response.Write("<script language='javascript'>alert('输入的页数不能小于等于0');history.back();</script>")

 

                            Response.End()

 

                        End Try

 

                    Else

 

                        Response.Write("<script language='javascript'>alert('您输入的页码不能大于页数');history.back();</script>")

 

                        Response.End()

 

                    End If

 

                Else

 

                    Response.Write("<script language='javascript'>alert('输入的页码数为必须数字');history.back();</script>")

 

                    Response.End()

 

                End If

 

            End If

 

        End Sub

 

#End Region

 

注释头样式:

 

'***********************************************************************

 

' Module: Disease.vb

 

' Author: 赵国亮

 

' Modified: 2005年6月13日 16:22:00

 

' Purpose: Definition of the Class Disease

 

' Comment: Web层数据层疾病前台显示。

 

'***********************************************************************

 

 

 

DataAccess层样式:

 

        '----------------------------------------------------------------

 

        ' Name:        UpdateKeyKnowledge(ByVal KeyKnowledgeID As Integer, ByVal objKeyKnowledge As Sanitation.DataAccess.DiseaseKey.DiseaseKey)

 

        ' Description: 根据DiseaseSeriaNo修改疾病金钥匙中指定疾病的健康保健知识,成功返回1,失败返回0

 

        ' Parameters:

 

        '    [ByVal] objKeyKnowledge -

 

        ' Return:      Integer

 

        '----------------------------------------------------------------

 

        Public Function UpdateKeyKnowledge(ByVal KeyKnowledgeID As Integer, ByVal objKeyKnowledge As Sanitation.DataAccess.DiseaseKey.DiseaseKey) As Integer

 

            ' TODO : 调用存储过程:p_UpdateKeyKnowledge

 

 

 

            '建立连接

 

            Dim conn As SqlConnection = New SqlConnection(ConnectionString)

 

           Dim cmd As SqlCommand = New SqlCommand("p_UpdateKeyKnowledge", conn)

 

 

 

            cmd.CommandType = CommandType.StoredProcedure

 

 

 

            '传递参数

 

            Dim param As SqlParameter

 

 

 

            '------------------------------------对KeyKnowledge表进行修改操作---------------------------------

 

 

 

            param = cmd.Parameters.Add("@KeyKnowledgeID", SqlDbType.Int)

 

            param.Value = KeyKnowledgeID                                        ' 健康保健知识的编号

 

 

 

            param = cmd.Parameters.Add("@KeyKnowledgeTitle", SqlDbType.VarChar)

 

            param.Value = objKeyKnowledge.KeyKnowledgeTitle                     ' 疾病健康保健知识标题

 

 

 

            param = cmd.Parameters.Add("@KeyKnowledgeContent", SqlDbType.Text)

 

            param.Value = objKeyKnowledge.KeyKnowledgeContent                   ' 疾病健康保健知识内容

 

 

 

            Dim cmm As Integer

 

 

 

            '打开连接

 

            conn.Open()

 

            cmm = cmd.ExecuteNonQuery

 

 

 

            '关闭连接

 

            conn.Close()

 

 

 

            '返回函数值

 

            If cmm > 0 Then

 

                Return 1

 

            Else

 

                Return 0

 

            End If

 

 

 

        End Function

 

 

 

页面注意

 

1.添加,删除,返回等按钮使用圆角图片按钮;

 

2.各个DataGrid外表格的宽度为95%,居中;

 

3.各个DataGrid头部加入正确背景;

 

4.文本显示要注意添加强制换行;

 

 

 

后台DataGrid中背景色

 

DataGrid #FFFFFF

 

页眉 #E4EDF9

 

普通项 #F1F3F5

 

 

 

测试注意问题

 

1.越权;

 

2.页面样式;

 

3.按钮对应功能;

 

4.每个页面的title;

 

5.上传文件大小的限制;

 

6.各个输入文本框添加是否为空的判断;

 

7.空数据情况下页面显示是否正常,功能是否正常;

 

8.少数据情况下页面显示是否正常,功能是否正常;

 

9.多数据情况下页面显示是否正常,功能是否正常;

 

10.不同用户登陆后所见功能及操作是否正常;

 

11.功能是否全面;

 

每个页面都要做详细测试,并多多注意!

 

12.所有页面中有文本添加的地方,在前台是否按原样显示。

 

13.权限控制

 

用例1:

 

用例名称

 无登录权限测试

 

操作步骤

 1) 登录后打开要测试的页面,右键选择页面的属性,复制页面的地址。

 

2) 退出登录(清空cookies),在浏览器地址栏粘贴页面地址打开页面。

 

应当返回结果

 弹出对话框提示无权限,并终止页面的显示。

 

 

用例2:

 

用例名称

 有登录权限测试

 

操作步骤

 1) 登录后打开要测试的页面,右键选择页面的属性,复制页面的地址。

 

2) 以没有权限的用户登录,在浏览器地址栏粘贴页面地址打开页面。

 

应当返回结果

 弹出对话框提示无权限,并终止页面的显示。

 

 

14. 特殊字符

 

用例1:

 

用例名称

 输入特殊字符

 

操作步骤

 在标题或内容中输入特殊字符:

 

1、 空格

 

2、 </td></tr></table>

 

3、 <span onclick="alert('test');">test</span>

 

应当返回结果

 进行字符(反)替换,按原样显示。或去掉标题中的空格(trim)

 

 

用例2:

 

用例名称

 输入连续英文字符

 

操作步骤

 在标题或内容中输入特殊字符:

 

如:ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt

 

应当返回结果

 用

 

<table style="table-layout:fixed; word-break:break-all; word-wrap:break-word;">

 

<tr><td>test

 

</td></tr>

 

</table>

 

控制,不使表格变形!

 

Copyright © 2024 方舟
Powered by .NET 8.0 on Kubernetes