【问题标题】:How to get the name of the previous page from redirected page如何从重定向页面获取上一页的名称
【发布时间】:2017-12-29 12:23:32
【问题描述】:

我想获取上一页的名称,但问题是我的代码无法获取上一页的名称。例如,我有两个页面Previous.aspxNext.aspx。在Next.aspx 页面中,我想要页面 URL Previous.aspx 的页面名称。我怎样才能做到这一点?我在Next.aspx 页面中尝试了以下代码。

public string GetPreviousPageName()
{
    string Path = System.Web.HttpContext.Current.Request.UrlReferrer.AbsolutePath;
    System.IO.FileInfo Info = new System.IO.FileInfo(Path);
    string pageName = Info.Name;
    return pageName;
}

【问题讨论】:

  • 你的意思是标题标签?页面.标题。
  • @Tuğrul 是的,我想要页面标题
  • 我会使用 Cookie。保存并加载。 Cookies["title"]=Page.Title;

标签: c# asp.net


【解决方案1】:

以下是实现此目标的方法:

1.您必须将要调用的页面的 URL 存储在某个位置,例如在 Page_Load() 方法中使用 ViewState:

if( !IsPostBack )
{
     ViewState["ReferrerUrl"]  = Request.UrlReferrer.ToString()
} 

2.从ViewState中获取url:

 string referrerUrl = (string) ViewState["ReferrerUrl"];

3.获取该网址的页面名称:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(referrerUrl);
string pageName = fileInfo.Name;

【讨论】:

  • 这一行发生异常 System.IO.FileInfo fileInfo = new System.IO.FileInfo(referrerUrl);该值不能为空参数名称:fileName
  • Thanx @Kao 它运行完美。我已经纠正了我的异常问题
【解决方案2】:

在控制器中

// Home is default controller
      var controller = (Request.UrlReferrer.Segments.Skip(1).Take(1).SingleOrDefault() ?? "Home").Trim('/');
// Index is default action 
      var action = (Request.UrlReferrer.Segments.Skip(2).Take(1).SingleOrDefault() ?? "Index").Trim('/');

在授权类中

     var Url= filterContext.HttpContext.Request.UrlReferrer;
// Home is default controller
     var OldcontrollerAuth = (((Url != null) ? Url.Segments.Skip(1).Take(1).SingleOrDefault() : "Home") ?? "Home").Trim('/');
// Index is default action 
     var OldActionAuth = (((Url != null) ? Url.Segments.Skip(2).Take(1).SingleOrDefault() : "/") ?? "/").Trim('/');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多