Подтвердить что ты не робот

ASP.NET: Получить имя файла страницы

У меня есть страница ASPX с именем Default.aspx. Из его кода в Page_Load(), я хотел бы получить "Default.aspx", отдельно, в строку:

protected void Page_Load(object sender, EventArgs e)
{
    string aspxFileName = ?;
}

Что мне следует заменить ? на — что получит мне имя файла ASPX?

4b9b3361

Ответ 1

System.IO.Path.GetFileName(Request.PhysicalPath);

Ответ 2

protected void Page_Load(object sender, EventArgs e)
{
    string cssFileName = Path.GetFileName(this.Request.PhysicalPath).Replace(".aspx", ".css");
}

Ответ 3

Некоторые короткие ответы уже приняты так, для удовольствия, и потому, что вы, скорее всего, захотите сделать это из других веб-форм, вот расширенное решение, которое будет равномерно влиять на все веб-формы в вашем проекте (включая код для получения имени файла по запросу).

Сделайте метод расширения для класса 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();
    }

Вызов этого метода в любой веб-форме в вашем проекте.