`
isiqi
  • 浏览: 16355277 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

[翻译]你或许还未听说过的一些ASP.NET 2.0要诀

阅读更多

原文链接:http://weblogs.asp.net/dwahlin/archive/2007/04/17/simple-asp-net-2-0-tips-and-tricks-that-you-may-or-may-not-have-heard-about.aspx

翻译不当请指正~~毕竟我这方面的能力还是蛮欠缺的,呵呵~~
[04月26号:我已经将本文所有Tips做到一个Demo中,提供下载:Demo下载]
在开发Web应用程序方面,Asp.net是一个令人敬畏的框架。如果你使用过一段时间,那么这就不是什么秘密了。它提供了一些十分强大的新特征,而你只需要些少量的代码就能实现。我曾经列出一个清单,上面是一些你可以只用少量或不用任何c#/VB.net代码就能实现的非常简单(甚至很酷)的功能。如果你有其他建议,可以添加评论,如果你的建议是一件能够容易应用的任务,我将进一步更新我的清单。
1、当页面PostBacks的时候,保持滚动条的位置。
在ASP.NET 1.1中,当进行postback 操作的时候,如果想保持滚动条的位置,那真是一件痛苦的事情,特别是当页面上有一个grid(表格?)而你想编辑某一具体行的时候。页面将会重新加载,滚动条位于页面顶端,而不是你期望的位置,这样你就不得不下拉滚动条。在ASP.net2.0中,你可以简单地在Page directive这里加上MaintainScrollPostionOnPostBack 属性(来实现同样的功能)。

" Inherits="" %>

2、当页面加载的时候,控件获得默认焦点。
这是另一件很简单的事情,而不用通过写javascrip脚本。如果你的页面上只有一个(或者两个)文本输入框,用户为什么非要点击文本框之后才能开始输入呢?光标难道就不能自动位于文本框,用户可以马上输入?使用HtmlForm控件的DefaultFocus 属性,你就可以很容易地做到。



3、当用户按下Enter键的时候,设置默认触发按钮。
在ASP.NET 1.1中,这又是一件十分痛苦的事情。当用户按下Enter键的时候,你需要写一些javascript代码,来保证页面上适当的按钮触发一个服务器端“Click”事件。幸运的是,每当用户按下Enter键的时候,你现在可以使用HtmlForm的DefaultButton 属性来设置点击哪一个按钮。还有一种情况,每当user(指光标是否更合适?)进入页面上不同面板触发不同的按钮,(这个情况下),就可以设置Panel控件的DefaultButton 属性。



4、容易地定位nested controls(嵌套控件?排列整齐的控件?表达不出来...呵呵~)。
在一个页面的控件层次中查找某些控件,确实是一件很头痛的事。但是如果你知道控件是如何嵌套(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):



<formview id="formVw" runat="server"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><itemtemplate><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"> Name: <br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><textbox id="txtName" runat="server"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"> Text='' /&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></textbox></itemtemplate><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></formview>

在服务器端代码中调用FindControl()方法,也有一点小技巧。想了解更多细节,稍后请访问 I blogged about this 。这里有一个例子:

TextBox tb = this.FindControl("form1$formVw$txtName") as TextBox;
if (tb != null)
{
//Access TextBox control
}

5、Strongly-typed access to cross-page postback controls强类型方式访问跨页面PostBack控件。
这一条比其他任何一点都更加involved(“包含”?不像,应该是“不常用”的意思吧),但是十分有用。一个页面提交信息到另一个页面,在这里ASP.NET 2.0介绍了跨页面提交的概念。按钮提交数据到一个页面,把按钮的PostBackUrl属性设置为目标页面的名字,就是通过这种方式(实现跨页面提交)。
一般情况下,可以通过PreviousPage.FindControl("ControlID")方式来访问提交的数据。然而,这需要看情况(requires a cast),如果你需要访问先前页面中的属性(经常需要这么做)。如果在发起回传操作的页面后台代码中增加一个公有属性,那么你可以通过在本次回传的目标页中增加PreviousPageType directive,以强类型的方式来访问这些公有属性。如果你还没有尝试过,这听起来或许有点混淆,所以允许我多解释一些。

假如有一个页面叫做Default.aspx,同时向外提供一个公有属性,来返回页面中定义的TextBox的值。数据所要提交到的页面(姑且叫做SearchResult.aspx吧)就能够以强类型的方式访问到这些属性,只需要在SearchResult.aspx页面顶端增加PreviousPageType directive:


通过添加这个directive,SearchResult.aspx中的代码就可以以强类型的方式访问Default.aspx中定义的TextBox。在以下的示例中,假设Default.aspx中定义的属性名是SearchTextBox.

TextBox tb = PreviousPage.SearchTextBox;

很明显,这行代码只有在上一页(Previous Page)是Default.aspx的情况下才能正常运行。同时PreviousPageType 也有一个TypeName属性,根据这个属性,你可以定义一个基类型,这样你可以让一个或者多个页面获取这个基类型的值来支持多页面。你可以从这里了解更多关于PreviousPageType。
(这段代码不好翻译,免于出错,仅给出部分意思,望达人补充,原文如下:This code obviously only works if the previous page is Default.aspx. PreviousPageType also has a TypeName property as well where you could define a base type that one or more pages derive from to make this technique work with multiple pages. You can learn more about PreviousPageType here.)
6、强类型方式访问MasterPages控件。
PreviousPageType directive 不是唯一一种提供强类型访问控件的方式。如果想通过强类型的方式访问定义在MasterPages中的控件,你可以在要显示的页面中增加MasterType directive(记住,MasterType directive和PreviousPageType directive一样,也可以定义一个类型名)

这样,你就能在content page中按以下代码方式访问目标master page中的属性:

this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath attribute.";

你也可以找到一些关于使用master page的技巧,包括在我先前的一篇blog中所提到的“共享master page访问IIS虚拟目录”等。

7、验证组 Validation groups
你有这样一个页面,包含几个控件和几个按钮。当点击其中一个按钮的时候,你希望evaluate指定的按钮(evaluate原意:评估,得到……的值;这里的意思:得到按钮的值),而不是页面中所有的按钮。在ASP.NET 1.1 中,如果不去resorting to some hack code(怎么译?)的话,就很难处理这样的问题。ASP.NET 2.0给所有的验证控件和按钮(Button,LinkButton)增加了一个ValidationGroup属性,可以很容易地解决问题。如果在页面顶端有一个TextBox和一个Button控件,紧挨着TextBox是一个RequiredFieldValidator控件,把button和RequiredFieldValidator控件上的ValidationGroup属性值设置为相同的值,当点击按钮的时候,你就能fire(“激活”?不解~)一个验证。当点击按钮的时候,任何定义在ValidationGroup之外的验证都被忽略了。这里有一个示例:



Search Text: <textbox id="txtSearch" runat="server"></textbox>

<requiredfieldvalidator id="valSearch" runat="Server"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"> ControlToValidate="txtSearch" ValidationGroup="SearchGroup" /&gt; <br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><button id="btnSearch" runat="server" text="Search"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"> ValidationGroup="SearchGroup" /&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><img src="http://www.cnblogs.com/Images/dot.gif">.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"> Other controls with validators and buttons defined here<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></button></requiredfieldvalidator>

8、编码的时候查找控件或者变量的名字。
这个技巧和Asp.net没有直接关系,与VS.net反而更有关系。对你们这些只记住了控件或变量名的前几个字母而没有记住全名的人来说,这个技巧确实十分有用。这让我又有机会去提起来自microsoft下载到的两个伟大的下载。第一,在输入控件名的前几个字母的时候,按下CTRL+SPACEBAR,VS.net将会跳出一个匹配项的简短列表。的确,这将更加容易地找到控件或者变量的名字。(译者注:怎么没有第二了?)对于感兴趣的朋友,微软提供整套完整的VS.net快捷键下载:c# Version hereVB.NET Version here

[以下不译了...上午火箭赢球了,开心之余一口气译完了呵呵~~~]
That's all for now. There are a lot of other things that could be mentioned and I'll try to keep this post updated. Have a great (simple) ASP.NET 2.0 tip or trick? Post the details in the comments and I'll add it if the content is appropriate for the list. Make sure to list your name so I can give proper credit.

For those who are interested, you can also view videos I've put together that show how to accomplish different tasks from working with AJAX, to ASP.NET to Web Services and WCF at the following URL:

http://weblogs.asp.net/dwahlin/archive/tags/Video/default.aspx

分享到:
评论

相关推荐

    ASP.NET 2.0入门经典:C#编程篇.pdf

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework之上,为开发者提供了更高效、更灵活的Web开发环境。本书《ASP.NET 2.0入门经典:C#编程篇》显然是针对初学者设计的,旨在帮助读者...

    ASP.net 2.0网络编程从入门到精通-修订.rar

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework的基础之上,为开发者提供了丰富的功能和高效的语言支持。本资源"ASP.NET 2.0网络编程从入门到精通-修订"显然是一个教程文档,旨在...

    asp.net 2.0动态网站开发教程

    ASP.NET 2.0还提供了创建和消费Web服务的能力,这使得不同应用程序间的数据交换变得简单。随着WCF(Windows Communication Foundation)的出现,服务集成更为全面和灵活。 十、部署和调试 ASP.NET 2.0提供了强大的...

    ASP.NET 2.0程序设计案例教程(课件)

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它是在.NET Framework 2.0版本上运行的。这个“ASP.NET 2.0程序设计案例教程”旨在为学习者提供深入理解和实践ASP.NET技术的机会。通过课件的形式,我们可以...

    Programming Microsoft ASP.NET 2.0 Applications - Advanced Topics

    《Programming Microsoft ASP.NET 2.0 Applications - Advanced Topics》是一本深入探讨ASP.NET 2.0高级应用开发的专业书籍。本书旨在帮助开发者充分利用ASP.NET 2.0的强大功能,实现高效、可扩展和高度定制化的Web...

    天轰穿ASP.NET2.0视频教程代码(共两部份)

    此"天轰穿ASP.NET2.0视频教程"针对初学者和进阶开发者,通过详细的教学指导,帮助用户掌握ASP.NET 2.0的核心概念和技术。 1. **ASP.NET 2.0架构** ASP.NET 2.0基于.NET Framework 2.0,引入了统一的页面生命周期...

    ASP.NET 2.0高级编程(特别版)》[英文CHM电子书+源代码].

    本书适用于有一些ASP.NET基础知识的编程人员以及准备迁移到ASP.NET 2.0的编程老手。内容较上一版更加全面、完善,而且添加了.NET平台上的一些最新技术(例如WCF、WPF等等),是该领域最权威的一本图书!

    ASP.NET 2.0入门经典(第4版)

    《ASP.NET 2.0 入门经典》将逐步引导您使用 ASP.NET 2.0 创建动态的、数据驱动的、复杂的Web站点。在本章结束时,我们将解释一些基本的想法并介绍一个完整的示例站点。然后将学习怎样使用 Visual Web Developer ...

    Wrox Asp.Net 2.0 Instant Results(asp.net2.0经典案例教程)

    《Wrox Asp.Net 2.0 Instant Results》是一本针对ASP.NET 2.0技术的经典案例教程,旨在帮助读者快速掌握并应用ASP.NET 2.0开发动态网站的技能。这本书由经验丰富的IT专家撰写,以实践为导向,通过丰富的实例来解释和...

    Asp.net 2.0高级编程(pdf)

    内容代码,使用VB.net和C# 两种解释 &lt;br&gt;第1章ASP.NET2.0概述 1 1.1简史 1 1.2ASP.NET2.0的目标 2 1.2.1开发人员的效率 3 1.2.2管理 5 1.2.3性能和可伸缩性 8 1.3ASP.NET2.0的其他新特性 8 ...

    ASP.NET2.0 经典案例教程

     本书通过深入剖析12个使用ASP.NET 2.0开发的项目,全面阐述了ASP.NET 2.0应用程序的架构及ASP.NET 2.0新增的控件和功能。通过探索这些项目的设计和代码,读者可快速掌握使用ASP.NET 2.0开发应用程序的技巧,从空白...

    ASP.NET2.0实用教程(C#版)书中例子.rar

    这个“ASP.NET2.0实用教程(C#版)书中例子”PPT很可能会涵盖以上这些主题,并通过实例演示如何在实践中应用这些技术。PPT中的例子可能包括创建简单的Web表单、使用控件进行数据绑定、实现用户身份验证以及利用AJAX...

    ASP.NET2.0+sql server 网络应用开发详解

    学习这本书,开发者不仅能掌握ASP.NET 2.0和SQL Server的基本用法,还能了解到如何结合这两者开发出高效、稳定且用户体验良好的网络应用。通过实际项目的练习,提升解决实际问题的能力,为今后的Web开发工作打下坚实...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit 源代码

    只要在Visual Stuio中轻松拖放即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,或是基于ASP.NET 2.0的一些简单Ajax功能的实现。...

    asp.net 2.0 宝典

    《ASP.NET 2.0 宝典》是一本深度探讨ASP.NET 2.0开发技术的专业书籍,其随书光盘包含了一系列的示例代码和教程,帮助读者深入理解和掌握这个强大的Web应用程序开发框架。虽然上传的文件只是部分内容,但它们涵盖了多...

    ASP.NET 2.0入门经典(第4版)源码

    ASP.NET 2.0是微软推出的Web应用程序开发框架,它基于.NET Framework,为开发者提供了构建动态网站、Web应用和Web服务的强大工具。本资源“ASP.NET 2.0入门经典(第4版)源码”提供了该书配套的源代码,帮助初学者深入...

    ASP.NET 2.0介绍

    ASP.NET 2.0 是微软推出的Web应用程序框架的第二个主要版本,它在ASP.NET 1.1的基础上进行了许多改进和增强。在这个版本中,开发者能够更高效、更灵活地构建动态网页应用。以下是对ASP.NET 2.0访问数据库、编译及...

    ASP.NET 2.0 入门经典(第4版).rar

    《ASP.NET 2.0 入门经典》将逐步引导您使用 ASP.NET 2.0 创建动态的、数据驱动的、复杂的Web站点。在本章结束时,我们将解释一些基本的想法并介绍一个完整的示例站点。然后将学习怎样使用 Visual Web Developer ...

    ASP.NET 2.0网络编程自学手册

    对于想要进一步提升的读者,还会介绍ASP.NET 2.0的MVC模式,尽管它主要在ASP.NET MVC框架中得到广泛应用,但了解其原理对理解ASP.NET 2.0的Web Forms模式同样有益。 总之,《ASP.NET 2.0网络编程自学手册》将带领...

Global site tag (gtag.js) - Google Analytics