ASP.Net中的一些基础家常事

   在使用SqlParameter[]时,当参数为个数为0个时,在方法间传递 SqlParameter[]参数时,须用new IDataParameter[]{}; 

                    如:方法   public    DataTable   GetAllDataTable(string sql,SqlParameter[] param){……}  当参数param个数为0个

                                调用:  GetAllDataTable(sql,new IDataParameter[]{});

 

      关于多iframe下的用户退出跳转: 

          当用户点击退出时,如果不设置正确跳转方式,跳转页面就会在某个Iframe中显示,而退出跳转要覆盖整个页:

                 解决办法:1. ScriptManager.RegisterStartupScript(this, this.GetType(), "", "parent.location.href='../Login.aspx'", true); [后台]

                             2.   ScriptManager.RegisterStartupScript(this, this.GetType(), "", "top.location.href='../Login.aspx'", true); 【这个有时候不行】

      关于页面中避免不需要的服务器控件触发验证控件,可将服务器提交控件的 CausesValidation=“false”

      *********************** 关于Asp.net获取或设置用户自定义控件中的控件值的几种做法 

               法1.     用户自定义控件名.FindControl("里面的控件名如:Ddllist") as  DropDownList ;  取值如下

                      String   str = (UC1.FindControl("Ddllist")  as   DropDownList).SelectedValue;   // 这种做法不是很好,用2的方法更好

               法 2.  可以将用户自定义控件中的控件值,在用户自定义控件中,封装成一个属性 ,在页面调用该控件时,直接获取该属性的值即可; 如:

                       在用户自定义控件中:

                               public   string ddlistName

                                {

                                      get{  return    Ddlist.SelectedValue ;}             // Ddlist表示用户自定义控件中的  控件名

                               }

                        在页面中调用

                                 string    str = UC1.ddlistName;    //  便可得到控件Ddlist.SelectedValue的值

                            

          ******关于验证控件的最佳做法:如果客户端JS被禁用,将无法验证,那么我们需要在提交按钮的单击事件里写上一个前提

                           public   void   btn_Click( object sender, EventArgs e)

                             {

                                     if ( Page.IsValid )                   // 表示客户端SJ未禁用,且通过了验证 

                                         { …… }

                              }        

    关于<input  type="UserName"  id="txtUserName"  runat="Server" /> 这种Html服务端控件的取值

          string   str=txtUserName.Value.Trim() ;不是textUserName.Text;

    *****   HTML按钮返回上一个页面代码

                     <input type="button" value="返回"  onclick="history.go(-1)" /> 

     1. ASP.Net中如何在后台加入脚本代码 ?                                                                           

               答:  因为后台代码为C#语言编写,无语直接读取脚本,可用Page对像的一个方法来添加,具体如下

                        string    str="<script language=javascript>window.alert(' 你已经重毒了!')</script>";

                      Page.ClientScript.RegisterStartupScript( this.GetType(), "" , str );

         **********   如果要传递一个JS方法则要做如下处理: 

                      Page.ClientScript.RegisterStartupScript( GetType() , "" , " function() ;" , true);

     

       2.服务器端控件表现客户端行为        *****非常重要  

            由于服务器端控件事件极少,通常须要表现一此客户端的事件行为,才能满足开发须要:

               如:TextBox控件的客户端"onblur"(失去焦点),“onfocus”(获得焦点)事件

                 代码如下

                       Protected   void    Page_Load( object  sender , EventArgs  e )

                          {

                                if (!Page.IsPostBack)

                                     {

                                           //特别注意 右边的不用写“<script ></script>” 了

                                           this.TextBox.Attributes.Add( "onblur" ,"window.alert( ‘我失去焦点了’ ) " ) ;

                                           this.TextBOX.Attributes.Add( "onfocus" , "window.alert(' 我得到焦点了') ");

                                     }

                          }

        3.跨页面的四种传值方式;                                                                                                           页面传值

               第一种.  ASP.net中的Post传值   

                   。传值页面  前台代码中                                   

                           a.页面安全问题先在 <%  Page  加 ValidataRequest = “false”  %>     //有时可以不加

                           b. 在页面Form标签中指定Post传值方式<% Form  加   method="post"  %>

                           c.指定传递按钮的PostBackUrl     (可在属性中设置) ;

                   。接收页面的 Page事件中

                            Label1.Text=Request.Form["txtID"].ToString();

 

                 第二种 Asp.Net中的Get传值 条件                                                                                          页面传值

                     。传值页面

                             b.在Form 标签中指定为Get传值方式  <% Form  加  method="get" %>

                     。接收页面   Page_Load事件中

                             label1.Text=Request.QueryString["txtID"].ToString();

                  第三种  Asp.Net利用FindControle()方法实现页面间的传值

                      。 在接收页面中的 Page_Load 事件中

                                if( !Page.IspostBack)

                                     {

                                            TextBox tb=(TextBox)Page.PreviousPage.FindControl("txtID");

                                            label1.Text=tb.Text; 

                                      }

                  第四种:非常常用使用Request.Redirect()传值 ,代码如下

                        。传值页面: Response.Redirect( "B.aspx?txtID="+txtID.Text );

                        。接收页面:  Label1.Text=Request.QueryString["txtID"].ToString();

       4.   实现3秒后刷新到另一页面  和利用JS 实现提示刷新跳转。

              。  Response.AddHeader( "refresh" , " 3 ; url=A.aspx") ;       //指3秒后刷新到A.aspx页       

              。当实现先提示再重定向到时某页面  时,特别注意(容易得到意想不到的效果)正确方法如下:

                  string   str="<script language=javascript>  window.alert('提示信息') ; window.location.href='A.aspx' </script>"   ;    // JS提示转向新面*******

 

                  Response.Write( str );

 

             如果 后面有变量就要改成如下:   (假如在后面的路径中有个变量  strurl)

                   string   str="<script language=javascript> window.alert('提示信息') ; window.location.href=\"A.aspx?id="+strurl+"\"</script>" ;

 

      5.  Server对像的两个连接,Server.Execute("A.aspx")  和Server.Transfer("N.aspx");

            a.对于Server.Execute("A.aspx")是先从当前页面跳到A.aspx,然后再回到当前页

           b.对于Server.Transfer( " B.aspx")是从当前页跳到B.aspx,一去不反

      6.   Server 对象的一些重要特性       

              a.      Server.Html    对HTML 标记进行编 码 或解码

                              如  Response.Write("<H1> 这是一个标记<H1>") ;但输出的确是大号的   "这是一个标记"并没有对<H1>进行输出

                                 可以作如下处理

                                              Response.Write( Server.HtmlEncode(”("<H1> 这是一个标记<H1>“)) ;

                                 输出结果 就为 "<H1>一个标记<H1>"    了

              b.      Server.MapPath("路径")   表示服务器的某位置

                         如:   Server.MapPatp("../image/123.JPG" ) ;  和Request.MapPath(" ../image/123.JPG")  一样

              c.      Server.UrlEncode()     目地把 字符串转化为可在URL传输的字符串

                               当我们传的递如:

                                           ReSponse.Redirect("../Default.aspx?key1=a&b&key2=123")时就会报错:原因是因为黄色部分不能自动解码

                                           所以要将黄色 这    一部分(不是全部) 解码

                                解决办法

                                           ReSponse.Redirect("../Default.aspx?key2=123&"+Server.UrlEncode ( "key1=a&b" ));

 

原文地址:https://www.cnblogs.com/yingger/p/2439865.html