【问题标题】:How to make page that redirects dynamically based on URL如何制作基于 URL 动态重定向的页面
【发布时间】:2015-01-14 03:59:10
【问题描述】:

抱歉标题不好,我真的不知道如何描述这个问题。欢迎任何建议。 我必须在一个大型 asp.net 项目(c#)中实现这一点: - 用户在浏览器中输入一些 url,应该是这种形式:

http://servername/directory/M1234N/2         

其中 M1234N 和 2 是一些示例值,可以根据用户需要而有所不同。 基于这两个值,页面应该被重定向到另一个页面。基本上,程序应该从 URL 中提取这两个值,并基于该计算重定向到哪里。 这甚至可能吗? 谢谢! PS抱歉帖子和标题不好,请随时纠正我

【问题讨论】:

  • 首先,M1234N和2在哪里定义它应该给出一个特定的URL?创作的算法是什么?是静态的还是动态的?
  • 假设它是静态 url,我认为你需要 url 路由!
  • 我不确定,任务只是输入特定的 url 并根据值进行重定向。我按照克里斯托斯的建议尝试了,但它不起作用

标签: c# asp.net url redirect


【解决方案1】:

是的,这是可能的。最初,您必须从查询中读取这些值。为此,您应该阅读网址

string url = HttpContext.Current.Request.Url.AbsoluteUri;

那你要根据"/"来拆分。

string[] splittedUrl = text.Split('/').ToArray();

这样你会得到一个数组,它的最后两个元素就是你想要的:

string val1 = splittedUrl[splittedUrl.Length-1];
string val2 = splittedUrl[splittedUrl.Length-2];

现在基于val1val2,您可以找到要重定向用户的页面,并且可以像在任何其他情况下一样重定向它。

【讨论】:

  • 他将 url 直接传递到浏览器中,我认为对于您的方法,您需要在该页面加载时需要一个额外的页面,您会这样做吗?或者我认为通过 url 路由将有利于直接重定向
  • 这正是我所做的。但它不起作用。那部分很容易。问题是如何在 VS projekt 中保存此页面?如果我以某种方式命名它,例如RedirectPage.aspx 当我在浏览器中输入时:localhost/RedirectPage/M1234N/2 我只是得到一个错误
  • 首先要定义的是M1234和2是什么?这些值如何与您要显示的页面相关联。然后您可以在页面和这些值之间建立关联。如果你给我一些关于这些值以及它们与你想显示的页面的关系的提示,我可能会找出你如何做到这一点。谢谢
  • 问题是如何在应用程序中创建可以处理这两个值的 aspx 页面(可以是用户想要的任何值)。处理并不重要,问题是如何让程序处理这样的链接,例如:localhost/RedirectPage/M1234N/2 其中 RedirectPage.aspx 存在于 projekt 中,当此链接在浏览器中时应处理其他值
【解决方案2】:

使用这个方法。

  1. 将 global.asax 文件添加到项目中
  2. 将此方法添加到 global.asax 文件中

      void Application_BeginRequest(object sender, EventArgs e)
    
    {
    
                string para2;
    
                string para1;
    
                string CurrentPath = Request.Path.ToLower();
    
            if (CurrentPath.Contains("http://servername/directory"))
            {
    
                //Get the two parameters from the url, here i am assuming that directory is static 
                //If not then you can change below two line for getting the passed parameters from url.
                //I think it is easy task just use some string functions         
                para2 = CurrentPath.Substring(CurrentPath.LastIndexOf("/"));
                para1 = CurrentPath.Substring(CurrentPath.IndexOf("directory"), CurrentPath.LastIndexOf("/"));      
                //Now work on these parameters and calculate the redirect page.
    
                //Replcing the httpcontext with new page
                HttpContext MyContext = HttpContext.Current;
                MyContext.RewritePath("path of your new page according calculations");
            }
        }
    

    在这个方法中,应用程序 beginRequest 将被每个请求调用。并且你在当前的 url 上工作。

【讨论】:

  • 抱歉,没用。似乎 beginREquest 从未被调用过。
  • 在此方法中添加断点。并确保您已在 global.asax 页面中编写此代码
  • 或者学习一下global.asax文件及其方法。这是处理重定向请求的简单方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多