【问题标题】:ASP.NET: Get Page's filenameASP.NET:获取页面的文件名
【发布时间】:2009-11-28 01:04:51
【问题描述】:

我有一个名为 Default.aspx 的 ASPX 页面。从Page_Load() 的代码隐藏中,我想单独将“Default.aspx”变成一个字符串:

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

我应该用什么替换 ? - 什么会得到 ASPX 文件名?

【问题讨论】:

    标签: asp.net filenames


    【解决方案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");
      }
      

      【讨论】:

      • @jdk:我认为 JamesBrownIsDead 是从他现有的代码中复制和粘贴的。但总体思路是有目共睹的。
      【解决方案3】:

      为了好玩,已经采取了一些简短的答案,并且因为您可能希望从其他 Web 窗体执行此操作,所以这里有一个扩展的解决方案,它将统一影响您项目中的所有 Web 窗体(包括获取文件名的代码根据要求)。

      通过将此代码放入文件中,为 System.Web.UI.Page 类创建扩展方法。您需要使用 .NET 3.5。

      namespace MyExtensions {
          using System.Web.UI;
      
          static public class Extensions {
      
              /* You can stuff anybody else's 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 Web 窗体中获取文件名(例如在您指定的加载方法中):

          using MyExtensions;
      
          protected void Page_Load(object sender, EventArgs e) {
              string aspxFileName = this.GetFilename();
          }
      

      在项目中的任何 Web 窗体上调用此方法。

      【讨论】:

      • 请不要将代码添加到系统命名空间。这是一个非常糟糕的主意。
      • 是的,我想一些关于命名空间使用的 cmets 可能会出现,因为我从我的新命名空间问题在这里引用了这篇文章 stackoverflow.com/questions/1813746/… - 所以我要编辑这个代码示例以使用自定义命名空间。
      • 好的,修改完此示例的命名空间使用以符合流行习惯,并取消此代码示例与上述链接的链接。
      猜你喜欢
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多