HttpContext AbsolutePath转到别名页面的错误URL - C#

时间:2014-10-21 14:02:44

标签: url path request alias httpcontext

在我的网站上,每个页面都有在代码隐藏中创建的链接,其中链接是当前URL,其中一个查询参数已更改。为此,我一直在使用这种方法(这个具体的例子是用于分页):

var queryValues = HttpUtility.ParseQueryString(HttpContext.Current.Request.QueryString.ToString());
queryValues.Set("page", num);
string url = HttpContext.Current.Request.Url.AbsolutePath;
string updatedQueryString = "?" + queryValues.ToString();
string newUrl = url + updatedQueryString;
return newUrl;

这对我当地的版本很好。但是,当我在Ektron中创建每个页面并添加手动别名时,生成的URL仍然会转到解决方案中的文件位置。例如,我的原始页面是/WebAssets/Templates/EventListView.aspx。我在Ektron中创建了/ Alumni / Events / List页面。我可以去/ Alumni / Events / List,但是当我点击页面按钮时,加载的页面是/WebAssets/Templates/EventListView.aspx?page=2而不是/ Alumni / Events / List /?page = 2

2 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:

var rawUrl = HttpContext.Current.Request.RawUrl;
var url = rawUrl.Split('?')[0];
string newUrl = url + updatedQueryString;

答案 1 :(得分:0)

使用/ Alumni / Events / List的主要内容块的QuickLink属性,这将是您想要用于页面链接或重定向到同一页面的别名。如果您已经在代码中的某个位置加载了ContentData,那么这可能是ContentData.QuickLink

注意:

  1. 别名可能会默认删除您的“页面”查询字符串参数,以解决此问题,在工作区中编辑您的别名,使其具有“追加”的“查询字符串操作”。

  2. 如果在前端使用它,请确保预先向QuickLink值预先提供“/”(如果它不是绝对值,而不是已经预先添加),否则您的链接将带您到/ Alumni / Events / List /校友/活动/列表?页面= 2,这是不好的。