随着微软 NET的流行 ASP NET越来越为广大开发人员所接受 作为ASP NET的开发人员 我们不仅需要掌握其基本的原理 更要多多实践 从实践中获取真正的开发本领 在我们的实际开发中 往往基本的原理满足不了开发需求 我们更多的要积累一些开发技巧 本文就向大家介绍一些实用技巧 希望对大家的开发有所裨益
~ 的用法
一般的情况下 我们是使用 / / 这样的相对路径来确定和规划我们的资源(比如图片 资源文件) 但这种方式下在我们部署应用的时候 可能会出错 另外对于 ascx的控件中如果包含了一个图片 而这个控件被我们在不同层次的两个目录的aspx文件分别引用时 问题就会出现了
~/image/about bmp 是一种非常好的方法 它以Web应用程序的根目录为起始点 这样使得比你使用 /image/about bmp这样的方式要更加灵活和方便 有一点不好 是这种方式是在ASP NET运行时动态解析的 所以在IDE设计模式中 你可能不能预览它
在刷新和提交页面后 保存你的页面滚动条的位置
经常有这样的情况 我们需要用户提交一个表单 但是表单中有超过 +个?控件或文本框要填写 也就是说用户需要拉动IE的滚动条才能够填得完 那么假如用户正在可见IE范围的 / 处 选择了一个组合框的值 很不幸组合框是服务器端的 那么也就意味着页面会提交一次 而当用户再看见刷新过的页面时 页面确定在 / 的地方也就是显示在页面最开始的地方 用户只有拖动鼠标 然后接着刚刚的地方再填写剩下的 个控件 很不幸 个控件又需要他选择一下?
用下面的方法可以很快地确定和记住你提交前的位置
网上的Old Dog Learns New Tricks也有一个类似的例子Maintain Scroll Position in any Page Element 不过他使用了Web Behavior这意味着你需要使用一个 htc文?lt;/P>
Private Sub RetainScrollPosition()
Dim saveScrollPosition As New StringBuilderDim setScrollPosition As New StringBuilder
RegisterHiddenField( __SCROLLPOS )saveScrollPosition Append( <script language= javascript > )saveScrollPosition Append( function saveScrollPosition() { )saveScrollPosition Append( document forms[ ] __SCROLLPOS value = thebody scrollTop; )saveScrollPosition Append( } )saveScrollPosition Append( thebody onscroll=saveScrollPosition; )saveScrollPosition Append( </script> )
RegisterStartupScript( saveScroll saveScrollPosition ToString())
If (Page IsPostBack = True) Then
setScrollPosition Append( <script language= javascript > )setScrollPosition Append( function setScrollPosition() { )setScrollPosition Append( thebody scrollTop = & Request( __SCROLLPOS ) & ; )setScrollPosition Append( } )setScrollPosition Append( thebody onload=setScrollPosition; )setScrollPosition Append( </script> )RegisterStartupScript( setScroll setScrollPosition ToString())
End If
End Sub
Private Sub Page_Load(ByVal sender As System Object ByVal e As System EventArgs) Handles MyBase LoadRetainScrollPosition()End Sub
DataList使用不同风格的模板
这招也非常实用 你可以制作两个不同的模板或表现形式 分别以 ascx控件的形式保存 运行时根据某个条件动态的选择使用其中的一个模板 另外ScottGu认为ItemDataBound方法也可以定制你显示的表现 比如加亮某个元素或是加一个促销广告图等等
Dim theme As Stringtheme = DropDownList SelectedValue
DataList ItemTemplate = Page LoadTemplate(theme & ascx ) CoolDataList DataSource = DSDataList DataBind()
设置服务器端控件的焦点
Private Sub SetFocus(ByVal controlToFocus As Control)Dim scriptFunction As New StringBuilderDim scriptClientId As String
scriptClientId = controlToFocus ClientIDscriptFunction Append( <script language= javascript > )scriptFunction Append( document getElementById( & scriptClientId & ) focus(); )scriptFunction Append( </script> )RegisterStartupScript( focus scriptFunction ToString())End Sub
Private Sub Page_Load(ByVal sender As System Object ByVal e As System EventArgs) Handles MyBase LoadIf (Page IsPostBack = False) ThenSetFocus(TextBox )End IfEnd Sub
lishixinzhi/Article/program/net/201311/15143
不走寻常路 设计ASP.NET应用程序的七大绝招[1]
~\/image\/about bmp 是一种非常好的方法 它以Web应用程序的根目录为起始点 这样使得比你使用 \/image\/about bmp这样的方式要更加灵活和方便 有一点不好 是这种方式是在ASP NET运行时动态解析的 所以在IDE设计模式中 你可能不能预览它 在刷新和提交页面后 保存你的页面滚动条的位置 经常有这样的情况 ...