2004/11/04 | 一些ASP.Net的小细节[转载]
类别(.Net) | 评论(1) | 阅读(374) | 发表于 16:38
一些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.
0

评论Comments

日志分类
首页[102]
.Net[11]
VBScript[1]
JScript[51]
XML[3]
HTML&CSS[9]
ASP[8]
ActiveX[4]
Software[10]
Other[5]