我有我的本地主持人和现场网站。我有一个网址,如果它在localhost中,网址应该是localhost / site / thank_you.aspx,如果它是活的http://mylivesite.com/thank_you.aspx
我在我的代码中尝试了这个......
MyHiddenField.Value = Request.URL + "/thank_you.aspx";
但它返回了我在/thank_you.aspx
上的页面我做错了什么?
答案 0 :(得分:8)
试试这个,我甚至也添加了方案,以防你去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");
答案 1 :(得分:2)
有一个内置课程UriBuilder
var url = Request.Url;
var newurl = new UriBuilder(url.Scheme, url.Host, url.Port, "thank_you.aspx")
.ToString();
答案 2 :(得分:0)
添加上面的答案。允许函数处理相对路径。例如:〜/或〜/ 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));
}