• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

session,寻找控件,验证,http处理

综合这两个必要条件,我们终于可以得出要让session_onend执行的充分条件了:
1)至少有一个request成功完整地执行
2)至少存储一些data在session state中。可以通过session变量或者加上session_onstart来实现。

4、简单的寻找固定的控件。

在页面的控件中按层次寻找控件很痛苦,但是如果你知道控件怎样固定在页面中,就可以用简写”$”来查找控件而不用写递归的代码。请看下面代码,注意”$”的使用:

1<form id="form1" runat="server" DefaultFocus="formVw$txtName">
2    <div>
3        <asp:FormView ID="formVw" runat="server">
4            <ItemTemplate>
5                Name:
6                <asp:TextBox ID="txtName" runat="server"
7                    Text='<%# Eval("FirstName") + " " + Eval("LastName") %>' />
8            </ItemTemplate>
9        </asp:FormView>
10    </div>
11</form>

这个小技巧也可以用在服务器端的 使用FindControl()函数时:

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


7、Validation groups验证组
一个页中可能有多个控件和多个按钮。当其中的一个按钮被点击后想要特定的validator被激发而不是页面中的所有validator。在ASP.NET 1.1中除了hack code没有更好的办法。ASP.NET 2.0中给所有的validator控件和按钮(button、linkbutton等等)增加了ValidatorGroup属性,就可以轻松地解决这个问题。如果在页面中有一个TextBox并且紧挨着他有一个RequiredFieldValidator 和Button控件,可以将RequiredFieldValidator和Button的ValidationGroup属性设置成一样的值从而使得点击button时只触发这个RequiredFieldValidator的validor,任何没有定义在ValidationGroup内的其他的validator都会被忽略。看下例:

1<form id="form1" runat="server">
2    Search Text: <asp:TextBox ID="txtSearch" runat="server" />
3                    <asp:RequiredFieldValidator ID="valSearch" runat="Server"
4    ControlToValidate="txtSearch" ValidationGroup="SearchGroup" />
5                    <asp:Button ID="btnSearch" runat="server" Text="Search"
6        ValidationGroup="SearchGroup" />  .
7        Other controls with validators and buttons defined here
8</form>


在repeater或datelist中放一个BUTTON。再自定义它的ONCLICK的事件。到候台代码中直接写就可以了


所以对于 http://www.infotouch.cn/detail.aspx?id=120 这样的情况很容易处理,只要处理为 http://www.infotouch.cn/detail/120.aspx 即可。因为IIS根据*.aspx的扩展名将控制权交给了Asp.Net,进而转给了HttpModules。

如果请求的路径(path)没有扩展名,例如:http://www.infotouch.cn/detail 这样的路径。IIS首先检查该虚拟路径是否对应到一个本地目录,如果具有对应的本地目录,再查找该目录下是否具有缺省文件,如果找到,就重定向为该缺省文件的路径。否则,IIS报告一个Http404-文件未找到错误。

posted @ 2008-08-19 13:43  不若相忘于江湖  阅读(233)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3