您的位置:首页 > 编程语言 > ASP

ASP.NET程序编写注意

2006-05-25 11:30 246 查看
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> 

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

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

转到

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

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

<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

BindData()

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

BindData()

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

dgrdRegister.BindData()

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

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

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

DataAccess层样式:

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

' Name: UpdateKeyKnowledge(ByVal KnowledgeID As Integer, ByVal objKnowledge As Sanitation.DataAccess.Key.Key)

' Description: 根据SeriaNo修改指定的知识,成功返回1,失败返回0

' Parameters:

' [ByVal] objKeyKnowledge -

' Return: Integer

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

Public Function UpdateKeyKnowledge(ByVal KnowledgeID As Integer, ByVal objKnowledge As Sanitation.DataAccess.Key.Key) As Integer

' TODO : 调用存储过程:p_Update

'建立连接

Dim conn As SqlConnection = New SqlConnection(ConnectionString)

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

cmd.CommandType = CommandType.StoredProcedure

'传递参数

Dim param As SqlParameter

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

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

param.Value = KnowledgeID ' 编号

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

param.Value = objKnowledge.KnowledgeTitle ' 标题

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

param.Value = objKnowledge.KnowledgeContent ' 内容

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>

控制,不使表格变形!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: