记录ASP.NET编程技巧,持续更新:
(1)可以用递归的方法一次性删除页面上的文本框的值,不管这个文本框在多少级容器中.

private void ClearText(ControlCollection Controls)
    {
        foreach (Control item in Controls)
        {
            if (item.Controls.Count > 0)
            {
                ClearText(item.Controls);
            }

            if (item is TextBox)
            {
                ((TextBox)item).Text = "";
            }
        }
    } 

(2)在asp.net中利用页面基类实现身份验证

基类代码如下:

/// <summary>

/// AdminPage是后台所有需要身份验证的页的基类

/// </summary>

public class AdminPage:System.Web.UI.Page

{

public AdminPage()

{

        //处理加载事件

        this.Load += new EventHandler(AdminPage_Load);

}

 

    void AdminPage_Load(object sender, EventArgs e)

    {

        //假设用户登录成功之后会设置一个名为“UserInfo”的Session

        //假设用户登录页面login.aspx位于网站根目录下的Admin文件下

        if (Session["UserInfo"] == null)

        {

            //使用~来保证无论在什么目录层次进行身份验证都能跳转到后台登录页面

            Response.Redirect("~/Admin/Login.aspx");

        }

    }

}

     这样,对于后台任何需要进行身份验证的页面,只需将它更改为继承自AdminPage类即可,这样这些类中就不需要编写任何身份验证的代码了。却已经能实现验证了,因为它继承自AdminPage类。

using System;   

using System.Data;   

using System.Configuration;   

using System.Collections;   

using System.Web;   

using System.Web.Security;   

using System.Web.UI;   

using System.Web.UI.WebControls;   

using System.Web.UI.WebControls.WebParts;   

using System.Web.UI.HtmlControls;   

 

public partial class Admin_News_Index : AdminPage   

{   

    protected void Page_Load(object sender, EventArgs e)   

    {   

 

    }   

}  

(3)GridView显示行的序号:

<asp:GridView ID="GridView1" runat="server">
   
<Columns>       
       
<asp:TemplateField>           
           
<ItemTemplate>               
               
<%#Container.DataItemIndex+1 %>               
           
</ItemTemplate>       
       
</asp:TemplateField>   
   
</Columns>
</asp:GridView>

(4)GridView排序

       protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {        
                ViewState["SortOrder"] = "StudentID";   //排序字段名称
                ViewState["OrderDire"] = "ASC";
                BindData();
            }
        }

        public void BindData()     //数据绑定代码
        {

            DataSet ds = new DataSet();
            StringBuilder strWhere = new StringBuilder();
            if (txtKeyword.Text.Trim() != "")
            {     
                #warning 代码生成警告:请修改 keywordField 为需要匹配查询的真实字段名称
                strWhere.AppendFormat("StudentID like '%{0}%'", txtKeyword.Text.Trim());
            }           
            ds = bll.GetList(strWhere.ToString());

            DataView view = ds.Tables[0].DefaultView;
            string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];   //注意这行
            view.Sort = sort;
            gridView.DataSource = view;

            gridView.DataBind();
        }

       //编写Sorting事件代码

       protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            string sPage = e.SortExpression;
            if (ViewState["SortOrder"].ToString() == sPage)
            {
                if (ViewState["OrderDire"].ToString() == "Desc")
                    ViewState["OrderDire"] = "ASC";
                else
                    ViewState["OrderDire"] = "Desc";
            }
            else
            {
                ViewState["SortOrder"] = e.SortExpression;
            }
            BindData();
        }

 (5)将QQ状态发布在页面上,其他人点击后可以进行联系

可以登录腾讯网站http://wp.qq.com/index.html,获得代码:

<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=123456&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:123456:41" alt="点击这里给我发消息" title="点击这里给我发消息"></a>

只要把红色部分换成你的QQ号码,然后粘贴到页面上,就可实现该功能。

(6)指定Form的action

在asp.net中runat="server"的Form,其action只能指向自己。
服务器在解释.aspx页面的时候,会自动把runat="server"的Form的action指定为自身,而不管这个Form是否已经指定了action。
也就是说,只有一般的Form才能提交到别的页面,而这种HTML的Form是不能包含任何服务器端控件的,这样一来,所有的结构就像ASP一样了。

在某些特殊情况下,如果要指定Form的action,则不能用runat="server"的Form,只能用普通的Form,如:

    <form id="form1" action="test.aspx" method=post>
    <div>
        <input type=text ID="TextBox1" name="TextBox1"></input>
        <input id="Submit1" type="submit" value="submit" /></div>
    </form>

获取提交数据的test.aspx代码如下:
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Request.Form["TextBox1"]);
        //Response.Write(Request.Params["TextBox1"]);
    }

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐