【发布时间】:2008-10-04 01:10:19
【问题描述】:
我正在尝试实现一个服务器控件,该控件会在 ASP.NET 站点的 web 目录中处理几个文件。我使用 VS Web Dev Express 2008 作为我的 IDE。当我调用HttpContext.Current.Request.ApplicationPath 来获取Web 根目录的路径以便我可以找到这些文件时,它返回C:。什么鬼?
绝对路径工作得很好,但我希望能够为服务器控件提供一个相对目录并让它完成它的事情。我做错了什么?
public String Target
{
get { return _target; }
set
{
if (value.StartsWith("~"))
{
// WTF? Gives me C:\? Why?
_target = HttpContext.Current.Request.ApplicationPath +
value.Substring(1);
}
else
{
_target = value;
}
}
}
private String _target;
protected override void Render(HtmlTextWriter writer)
{
HtmlControl wrapper = new HtmlGenericControl("div");
int fileCount = 0;
try
{
DirectoryInfo dir = new DirectoryInfo(_target);
foreach (FileInfo f in dir.GetFiles())
{
fileCount++;
a = new HtmlAnchor();
a.Attributes.Add("href", f.FullName);
a.InnerHtml = f.Name;
wrapper.Controls.Add(a);
}
}
catch (IOException e)
{
throw e;
}
Controls.Add(wrapper);
base.Render(writer);
}
【问题讨论】: