ASP.net难点解析

认识Asp.net 中相对路径与绝对路径

分类: 技术文档2010-01-1217:051490人阅读评论(1)收藏举报

好多人对相对路径与绝对路径老是混淆记不清楚,我从整理了一下,希望对大家的认识有帮助。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.Request.ApplicationPath->当前应用的目录
Jsp中, ApplicationPath指的是当前的application(应用程序)的目录,ASP.NET中也是这个意思。
对应的–例如我的服务器上有两个web应用域名都是mockte.com 一个映射到目录mockte.com/1/ 另一个影射到 http://mockte.com/2/
那么mockte.com/1/就是第一个应用的ApplicationPath 同理 mockte.com/2/就是第二个应用的ApplicationPath

2.Request.FilePath->对应于iis的虚拟目录
如 URL http://mockte.com/1/index.html/pathinfo
FilePath = /1/index.html

3.Request.Path->当前请求的虚拟路径
Path 是 FilePath 和 PathInfo 尾部的串联。例如 URL http://mockte.com/1/index.html/pathinfo
那么Path = /1/index.html/pathinfo

4.Request.MapPath(stringurl)->将url映射为iis上的虚拟目录
这个目录都是相对于application的根目录的
于Server.MapPath相比,不会包含类似c:/这样的路径
可以理解为是相对路径(对比的Server.MapPath就是绝对路径)

5.Server.MapPath(stringurl)->将url映射为服务器上的物理路径
例如 http://mockte.com/1/index.html 假设你的应用程序在c:/iis/MySite中
那么就是 c:/iis/MySite/1/index.html

//本地路径转换成URL相对路径
private string urlconvertor(string imagesurl1)
{
string tmpRootDir =Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
string imagesurl2 =imagesurl1.Replace(tmpRootDir, “”); //转换成相对路径
imagesurl2 =imagesurl2.Replace(@”/”, @”/”);
//imagesurl2 =imagesurl2.Replace(@”Aspx_Uc/”, @””);
return imagesurl2;
}
//相对路径转换成服务器本地物理路径
private stringurlconvertorlocal(string imagesurl1)
{
string tmpRootDir =Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//获取程序根目录
string imagesurl2 =tmpRootDir + imagesurl1.Replace(@”/”, @”/”); //转换成绝对路径
return imagesurl2;
}

 

1.使用filePath=”/Logs/abc.txt”,被认为是根目录,即网页文件所在的盘符,默认的是C盘,则在这里这个路径被解释为”C:/Logs/abc.txt”

2.使用filePath=”~/Logs/abc.txt”,被认为是服务器的目录

3.使用filePath=”./Logs/abc.txt”,仍然是服务器目录下

 

 

〈%# 〉与〈%=〉的区别,显示数据与绑定数据

分类: 技术文档2010-01-1118:29368人阅读评论(0)收藏举报

有很长时间没来 CSDN 的博客了。今天在社区里看到一个网友提问关于 asp.net 中“<%# %>” 的问题,所以还是想把这篇文章发到自己的博客上。虽然不是非常很高深的问题,但是还是应该多加留意……

aspx页面中,<%= %> 与 <%# %> 的区别

关于这个问题,在多数的 ASP.NET 的教材中,都提到了一些。<%= %>与<%# %>的区别在于:绑定时机不同,<%# %>是在控件调用DataBind函数的时候才被确定。对于<%= %>,我想你应该不会陌生,在ASP时代,它就相当于 Response.Write。在ASP.NET时代也一样。暂时先不去理会教材中说的,也先把“绑定时机”放到一边。<%= %>与<%# %>的区别是:前者是输出,而后者是赋值!即:

<%=”A” %> 相当于:Response.Write(“A”);

<%#”A” %> 相当于:变量=”A”;

先来看一个例子:

<html>

<body>

<asp:Button Text=<%# “Hello, the Internet!” %> RunAt=”Server” ID=”testButton”/>

</body>

</html>

这句话相当于赋值,把上面这个勾黑句子翻译成后台代码就是:testButton.Text=”Hello,the Internet!”;

第二个例子:

<html>

<body>

<%=”Hello, the Internet!” %>

<%#”Hello, the Internet!” %>

</body>

</html>

<%=”Hello, the Internet!” %> 就相当于:Response.Write(“Hello,the Internet!”);

那么第二个<%# %>怎么解释呢果按照我“赋值”的说法,它把值赋给谁了呢br>
其实翻译成后台代码是这样的:(newSystem.Web.UI.LiteralControl()).Text=”Hello, the Internet!”;

一段文本,虽然它不被包含在任何开始结束标签之间,但是[font=’Courier]ASP.NET[/font]也认为它是一个控件。一个[font=’Courier]LiteralControl[/font]控件。所以,[font=’Courier]<%# %>[/font]就是把值赋给[font=’Courier]LiteralControl[/font]控件的Text属性。

我做过一个生成静态 HTML 代码的类,使用的手法是包装了 HtmlTextWriter这个类。并且我做了跟踪调试。跟踪的结果令我感到很意外。ASP.NET 会把所有的未标有“runat=server”属性的标记,统统看作是一个LiteralControl 控件。例如在上面那些 HTML 代码里,例如在文章开始处的那些 HTML 代码里,ASP.NET会认为是有三个服务器控件,分别是:LiteralControl、Button、LiteralCtontrol。第一个LiteralControl 的 Text 值为“<html><body>Hello,theInternet!”,而最后一个 LiteralControl 的 Text值是“</body></html>”。也就是说,<%= %> 应早于 <%#%>,先被“翻译”出来……

———————-à>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

 

asp.net代码中尖括号和百分号的含义

在.aspx的文件中经常会碰到如下的代码,如:

1、<%=%> 里面放的变量名,如:

来源:网瘾大叔

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2011年11月2日
下一篇 2011年11月2日

相关推荐