在使用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" ));