|
|
一些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.
缺缺 发表于 2004-11-4 [所属栏目: .Net | 返回首页]
|
|
|