一些ASP.Net的小细节

些ASP.Net的小细节[转载] 

一些ASP.Net的小细节[转载]
原文地址:http://blog.csdn.net/norax/


这里将记录我在做网站的过程中花了时间去解决的一些细节问题。。。。

SELECT * FROM User WHERE Name=‘NoRax’ 这句会导致编译错误 因为User是SQL的关键字
HtmlControl的Visible属性不保存在ViewState中 所以对于需要隐藏的HtmlTable,每次PostBack都要声明Visible =false
而WebControl的Visible则会保存视图状态。
在使用了 Response.Cookies.Add(new HttpCookie("NewNum","0")); 之后但是没有发送到客户端之前可以马上使用:Request.Cookies["NewNum"].value不会导致“未将对象引用设置到对象实例”。但是Request.Cookies["NewNum"].value为“”而不是为“0”
注意以下顺序:
FormsAuthentication.SignOut();
Response.Cookies.Clear();
以上会导致注销失败,如果FormsAuthenticationTicket是持久的,下次登陆会发现FormsAuthenticationTicket未被注销。
Response.Cookies.Clear();
FormsAuthentication.SignOut();
而这个顺序可以顺利注销。
假如某一次请求让页面有一段javascript,而接下来的某个Click事件要让页面没有这段javascript,程序上实现了,但是由于是PostBack,所以上段javascript某些部分仍然在客户端运行,所以可能导致错误,解决办法是用一端同名空函数覆盖原函数。
假如页面中的Repeater控件只在第一次的时候需要做数据绑定,而以后的PostBack都使用它的ViewState 那么要注意的一点是,ItemDataBound事件只在第一次发生,但是,ItemCreated会在每一次Repeater呈现的时候发生。
TextBox 的换行问题:
如果同时输入许多个相同的字符,表格的宽度会被撑开。但是如果输入不同的字符,字符会根据表格的宽度自动换行。
对于TextBox 中的回车,这样解决:
Label1.Text=TextBox1.Text.Replace("/n","<br>");
Repeater的事件的e.Item.Controls[0].ToString();得到的是System.Web.UI.DataBoundLiteralControl。
e.Item.Controls[1].ToString();导致编译错误。
DataList的e.Item.Controls[x].ToString();(x为任意值)得到的是空值。
DataGrid的e.Item.Controls[0].ToString();为此行的第一个System.Web.UI.WebControls.TableCell。
这样就可以用多种办法控制表格内的文字。比如对于DataGrid来说:
DataGridItem li=e.Item;
Label lbl=new Label();
lbl.Text="<FONT color='#FF9900'>x</FONT>";
li.Controls[0].Controls.Add(lbl);
或者:
TableCell tc=(TableCell)e.Item.Controls[1];
tc.Text=" <FONT color='#FF9900'>x</FONT>";
禁用DataGrid的ViewState就无法使用0ItemCommand,EditCommand,CancelCommand

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值