我有一个名为Default.aspx
的ASPX页面。从它的Page_Load()
代码隐藏,我想获得“的Default.aspx”,独自一人,成一个字符串:ASP.NET:获取页面的文件名
protected void Page_Load(object sender, EventArgs e)
{
string aspxFileName = ?;
}
我应该更换?
与—什么会让我的ASPX文件名?
我有一个名为Default.aspx
的ASPX页面。从它的Page_Load()
代码隐藏,我想获得“的Default.aspx”,独自一人,成一个字符串:ASP.NET:获取页面的文件名
protected void Page_Load(object sender, EventArgs e)
{
string aspxFileName = ?;
}
我应该更换?
与—什么会让我的ASPX文件名?
protected void Page_Load(object sender, EventArgs e)
{
string cssFileName = Path.GetFileName(this.Request.PhysicalPath).Replace(".aspx", ".css");
}
System.IO.Path.GetFileName(Request.PhysicalPath);
一些简短的答案已经采取如此,为了好玩,因为你可能会想从其他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窗体此方法。
请不要将代码添加到系统名称空间。这是一个彻头彻尾的坏主意。 – 2009-11-28 21:16:37
是的,我想通了一些意见关于命名空间的使用量可能出来,因为我在这里引用http://stackoverflow.com/questions/1813746/should-i-put-custom-code-inside-此帖来自我的新的命名空间的问题microsofts-bcl-fcl-namespaces - 所以我要编辑这个代码示例以使用自定义命名空间。 – 2009-11-28 21:21:49
好的,修改完此示例的名称空间用法以符合常用做法,并从上述链接中取消了此代码示例的链接。 – 2009-11-28 21:28:41
为什么用.css替换.aspx? – 2009-11-28 01:16:13
@jdk:我认为JamesBrownIsDead是从他现有的代码中复制并粘贴的。但总的想法是所有人都可以看到的。 – 2009-11-28 01:21:49