在开发Web应用程序方面,Asp.net是一个令人敬畏的框架。如果你使用过一段时间,那么这就不是什么秘密了。它提供了一些十分强大的新特征,而你只需要些少量的代码就能实现。我曾经列出一个清单,上面是一些你可以只用少量或不用任何c#/VB.net代码就能实现的非常简单(甚至很酷)的功能。如果你有其他建议,可以添加评论,如果你的建议是一件能够容易应用的任务,我将进一步更新我的清单。
1、当页面PostBacks的时候,保持滚动条的位置。
在ASP.NET 1.1中,当进行postback 操作的时候,如果想保持滚动条的位置,那真是一件痛苦的事情,特别是当页面上有一个grid(表格?)而你想编辑某一具体行的时候。页面将会重新加载,滚动条位于页面顶端,而不是你期望的位置,这样你就不得不下拉滚动条。在ASP.net2.0中,你可以简单地在Page directive这里加上MaintainScrollPostionOnPostBack 属性(来实现同样的功能)。
2、当页面加载的时候,控件获得默认焦点。<%@ Page Language="C#" MaintainScrollPositionOnPostback="true"
AutoEventWireup="true" CodeFile="" Inherits="" %>
这是另一件很简单的事情,而不用通过写javascrip脚本。如果你的页面上只有一个(或者两个)文本输入框,用户为什么非要点击文本框之后才能开始输入呢?光标难道就不能自动位于文本框,用户可以马上输入?使用HtmlForm控件的DefaultFocus 属性,你就可以很容易地做到。
3、当用户按下Enter键的时候,设置默认触发按钮。<form id="frm" DefaultFocus="txtUserName" runat="server">
...
</form>
在ASP.NET 1.1中,这又是一件十分痛苦的事情。当用户按下Enter键的时候,你需要写一些javascript代码,来保证页面上适当的按钮触发一个服务器端“Click”事件。幸运的是,每当用户按下Enter键的时候,你现在可以使用HtmlForm的DefaultButton 属性来设置点击哪一个按钮。还有一种情况,每当user(指光标是否更合适?)进入页面上不同面板触发不同的按钮,(这个情况下),就可以设置Panel控件的DefaultButton 属性。
4、容易地定位nested controls(嵌套控件?排列整齐的控件?表达不出来...呵呵~)。<form id="frm" DefaultButton="btnSubmit" runat="server">
...
</form>
在一个页面的控件层次中查找某些控件,确实是一件很头痛的事。但是如果你知道控件是如何嵌套(nest)的,你可以使用不怎么常用的快捷方式"$"来查找控件,而不用写递归代码。If you're looking for a great way to recursively find a control (in cases where you don't know the exact control nesting) check out my good buddy Michael Palermo's blog entry.(这一句是广告,不翻了~)。以下代码展示了如何使用DefaultFocus 属性来给嵌套在FormView控件里面的文本框设置焦点。注意,用“$”来划定嵌套方式(nesting):
在服务器端代码中调用FindControl()方法,也有一点小技巧。想了解更多细节,稍后请访问 I blogged about this 。这里有一个例子:<form id="form1" runat="server" DefaultFocus="formVw$txtName">
<div>
<asp:FormView ID="formVw" runat="server">
<ItemTemplate>
Name:
<asp:TextBox ID="txtName" runat="server"
Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
</ItemTemplate>
</asp:FormView>
</div>
</form>
TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}