Ответ 1
System.IO.Path.GetFileName(Request.PhysicalPath);
У меня есть страница ASPX с именем Default.aspx
. Из его кода в Page_Load()
, я хотел бы получить "Default.aspx", отдельно, в строку:
protected void Page_Load(object sender, EventArgs e)
{
string aspxFileName = ?;
}
Что мне следует заменить ?
на — что получит мне имя файла ASPX?
System.IO.Path.GetFileName(Request.PhysicalPath);
protected void Page_Load(object sender, EventArgs e)
{
string cssFileName = Path.GetFileName(this.Request.PhysicalPath).Replace(".aspx", ".css");
}
Некоторые короткие ответы уже приняты так, для удовольствия, и потому, что вы, скорее всего, захотите сделать это из других веб-форм, вот расширенное решение, которое будет равномерно влиять на все веб-формы в вашем проекте (включая код для получения имени файла по запросу).
Сделайте метод расширения для класса System.Web.UI.Page, поместив этот код в файл. Вам нужно использовать .NET 3.5.
namespace MyExtensions {
using System.Web.UI;
static public class Extensions {
/* You can stuff anybody else logic into this
* method to get the page filename, whichever implementation you prefer.
*/
static public string GetFilename(this Page p) {
// Extract filename.
return p.AppRelativeVirtualPath.Substring(
p.AppRelativeVirtualPath.IndexOf("/") + 1
);
}
}
}
Чтобы получить имя файла из любой веб-формы ASP.NET(например, в указанном вами методе загрузки):
using MyExtensions;
protected void Page_Load(object sender, EventArgs e) {
string aspxFileName = this.GetFilename();
}
Вызов этого метода в любой веб-форме в вашем проекте.