Ich versuche, ein Server-Steuerelement zu implementieren, das ein paar Dateien innerhalb des Web-Verzeichnisses einer ASP.NET-Website frobs. Ich verwende VS Web Dev Express 2008 als meine IDE. Wenn ich aufrufe HttpContext.Current.Request.ApplicationPath
um einen Pfad zum Web Root zu erhalten, damit ich diese Dateien finden kann, gibt er C: zurück. Was zum Teufel?
Absolute Pfade funktionieren ganz gut, aber ich möchte in der Lage sein, die Serversteuerung mit einem relativen Verzeichnis zu füttern und sie einfach ihr Ding machen zu lassen. Was habe ich falsch gemacht?
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);
}