我正在使用它来获取当前页面名称.所以这将返回例如MyPage.aspx
public string GetCurrentPageName()
{
string urlPath = Request.Url.AbsolutePath;
FileInfo fileInfo = new FileInfo(urlPath);
string pageName = fileInfo.Name;
return pageName;
}
Run Code Online (Sandbox Code Playgroud)
必须有一个更简单的方法吗?这意味着必须有.NET框架中的现有方法或属性.
Mar*_*son 49
我解释这个问题的方式,你正在寻找的是一种有效的方法来检索当前正在执行的aspx页面的名称,即System.Web.UI.Page.
如果这是真的,你不应该处理任何FileInfo对象或命中文件系统.只需在页面对象上使用AppRelativeVirtualPath属性:
using System;
using System.IO;
using System.Web.UI;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string pageName = Path.GetFileNameWithoutExtension(Page.AppRelativeVirtualPath);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果要获取当前正在执行的页面的完全限定(或"root")路径,可以使用Server.MapPath,如下所示:
string path = Server.MapPath(Page.AppRelativeVirtualPath);
Run Code Online (Sandbox Code Playgroud)
使用AppRelativeVirtualPath即使在使用URL重写时也可以使用,因为它不使用Request.Url(由用户提供),所以您不必担心潜在的恶意数据.
会HttpContext.Current.CurrentHandler是你想要的?
因为你对物理文件名和页面对象更感兴趣
var page = (Page) HttpContext.Current.CurrentHandler;
string url = page.AppRelativeVirtualPath;
Run Code Online (Sandbox Code Playgroud)
这与来自@Markus Olsson的信息一起,即使您不在页面课程中,也可以在执行期间的任何时候访问该页面.
我用Request.Url.Segments.Last(),我觉得它很优雅.
只是出于兴趣,我很少对智能进行搜索。找不到任何财产。在其他方面仍然是相同的逻辑。
string currentPageName = System.IO.Path.GetFileName(Request.Url.AbsolutePath);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44803 次 |
| 最近记录: |