我有我的本地主机和一个实时站点。我有一个 url,如果它在 localhost 中,则 url 应该去 localhost/site/thank_you.aspx,如果它是实时的http://mylivesite.com/thank_you.aspx
我已经在我的代码中尝试过这个......
MyHiddenField.Value = Request.URL + "/thank_you.aspx";
但它返回了我在 /thank_you.aspx 上的页面
我究竟做错了什么?
我有我的本地主机和一个实时站点。我有一个 url,如果它在 localhost 中,则 url 应该去 localhost/site/thank_you.aspx,如果它是实时的http://mylivesite.com/thank_you.aspx
我已经在我的代码中尝试过这个......
MyHiddenField.Value = Request.URL + "/thank_you.aspx";
但它返回了我在 /thank_you.aspx 上的页面
我究竟做错了什么?
试试这个,我什至也添加了方案,以防万一你去 https :)
编辑:还添加了端口(感谢 Alex),以便成为超级骗子超级面向未来的 :)
MyHiddenField.Value = string.Format(
"{0}://{1}{2}/thank_you.aspx",
Request.Url.Scheme,
Request.Url.Host,
Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port);
编辑:@MikeSmithDev 的另一个好建议,把它放在一个函数中
public string GetUrlForPage(string page)
{
return MyHiddenField.Value = string.Format(
"{0}://{1}{2}/{3}",
Request.Url.Scheme,
Request.Url.Host,
Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port,
page);
}
然后你可以这样做:
MyHiddenField.Value = GetUrlForPage("thank_you.aspx");
有一个内置类UriBuilder
var url = Request.Url;
var newurl = new UriBuilder(url.Scheme, url.Host, url.Port, "thank_you.aspx")
.ToString();
添加到上面的答案。允许函数处理相对路径。例如:~/ 或 ~/test/default.aspx
public string GetUrlForPage(string relativeUrl)
{
return string.Format(
"{0}://{1}{2}{3}",
Request.Url.Scheme,
Request.Url.Host,
Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port,
Page.ResolveUrl(relativeUrl));
}