发了连个星期把学校的bbs重新做了一下,弄了一连个通宵,发现弄完后还是很有收获的,每一个项目,不管是大还是小,做完后还是有些心得的,把一点个人的小总结写一下!
1:关于aspx页面即前台显示后台的方法返回的结果问题,举个简单的例子
前台代码:
<div>
<%string str=Get("111");
Response.Write(str);
%>
</div>
后台的代码:
public string Get(string str)
{
return "panjun" + str + "hello";
}
这里面有个问题,在前台如果想用后台定义的方法,必须加服务器端的表示<%%>只有在这之间的就相当于在后台运行一样,不过你不用 Response.Write(str);输出的话页面就不会有显示的!如果是在数据控件如datalist中可以用<%#GetSex(Convert.ToByte(DataBinder.Eval(Container.DataItem,"sex")))%>这个相当于把读取的字段sex读取出来,再用自己在后台定义的方法
public string GetSex(byte sex)
{
if (sex == 0)
{
return "男";
}
else
{
return "女";
}
}
返回结果!
2:关于TextBox的String.Empty
如果你在页面放歌TextBox,什么都不输入,这个时候要验证是否输入了东西如字符的话,
if(this.textbox1.text=="")和if(this.textbox1.text==String.Empty)是相同的,Textbox什么都不输入的话,其不为null,而是不为String.empty或则""不是" ",null
3:弄了一个类似异步刷新的几个页面,发现现在对以前的iframe有了更深的了解,一个页面嵌套一个iframe,在这个iframe刷新的时候其实整个页面是不会刷新的,这个有了富客服端的感觉!
4:ascx和一些含有服务器端标签的控件是绝对不能放在html中的,包括.net中的验证控件,我在做的过程中还是犯了几个低级错误,不过以后或许不会了!
5:发现还是原来弄得时候没弄得很透彻,所以现在做的时候还是出问题了,我做了一个网站统计的程序,统计的数据是放在一个文本文件count.txt中,在global.asax中配置的
int count = 0;
StreamReader srd;
string file_path = Server.MapPath("count.txt");
srd = File.OpenText(file_path);
while (srd.Peek() != -1)
{
string str = srd.ReadLine();
count = int.Parse(str);
}
srd.Close();
object obj = count;
Application["counter"] = obj;
这里有个什么潜在的问题呢?就是你在访问一个不是根文件夹下的页面,而是直接访问一个文件夹下的页面,这个时候,就会报错,说什么找不到counter.txt,其实这个问题还是很好解决的,改成
string file_path = Server.MapPath("~/count.txt");就可以了
这让我不得不把这几个的区别在弄出来了
Server.MapPath方法的应用方法
总注:Server.MapPath获得的路径都是服务器上的物理路径,也就是常说的绝对路径
1、Server.MapPath("/")
注:获得应用程序根目录所在的位置,如 C:\Inetpub\wwwroot\。
2、Server.MapPath("./")
注:获得所在页面的当前目录,等价于Server.MapPath("")。
3、Server.MapPath("../")
注:获得所在页面的上级目录。
4、Server.MapPath("~/")
注:获得当前应用级程序的目录,如果是根目录,就是根目录,如果是虚拟目录,
就是虚拟目录所在的位置,如C:\Inetpub\wwwroot\Example\。ge
5:关于后台的一个页面总是连接到首页的问题:
说来奇怪,不知道为什么,明明连接是对的,可是就是连接到主页,后来发现是代码错了,虽然后台代码混乱后,即使你没有说连接到主页,他也会产生混乱的连接的.
先写这一点点了,过几天再说说,呵呵……