Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从dotnetnuke获取完整url_C#_Asp.net_Dotnetnuke - Fatal编程技术网

C# 如何从dotnetnuke获取完整url

C# 如何从dotnetnuke获取完整url,c#,asp.net,dotnetnuke,C#,Asp.net,Dotnetnuke,如果我使用这个: Request.Url.AbsoluteUri 我得到完整的url,如: http://localhost/mysite/Default.aspx?TabID=269&OTHER-parameters 但我不想使用TabID,我需要友好的url,所以如果我使用: DotNetNuke.Entities.Tabs.TabController.CurrentPage.FullUrl; 我明白了 但这样我就不会得到参数:( 如何使用所有参数从dnn获取完全友好的完整ur

如果我使用这个:

Request.Url.AbsoluteUri
我得到完整的url,如:

http://localhost/mysite/Default.aspx?TabID=269&OTHER-parameters
但我不想使用TabID,我需要友好的url,所以如果我使用:

DotNetNuke.Entities.Tabs.TabController.CurrentPage.FullUrl;
我明白了

但这样我就不会得到参数:(

如何使用所有参数从dnn获取完全友好的完整url?

我认为这将满足您的需求

string url = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.RawUrl;

不幸的是,在DNN中获取当前URL并不是一种简单的方法,因为URL在到达模块之前会被重写

我们通常会使用
Globals.NavigateURL
重新生成URL。您可以使用
DotNetNuke.Common.Utilities.UrlUtils.GetQSParamsForNavigateURL
从当前URL获取所有查询字符串参数

所以,你最终会得到这样的结果:

var currentUrl = Globals.NavigateURL(
    this.TabId, 
    this.Request.QueryString["ctl"], 
    UrlUtils.GetQSParamsForNavigateURL());

这将为您提供一个用户友好的url

,它将与
Request.Uri.AbsoluteUri
有相同的问题,这很有效!非常好地解决了一个棘手的问题,并且都在一行代码中。
var currentUrl = Globals.NavigateURL(
    this.TabId, 
    this.Request.QueryString["ctl"], 
    UrlUtils.GetQSParamsForNavigateURL());
`string url = TabController.CurrentPage.FullUrl;`