我有我的本地主机和一个活网站。我有一个网址,如果它在本地主机的URL应该去本地主机/网站/ thank_you.aspx如果其直播http://mylivesite.com/thank_you.aspx本地主机和活网站的Request.URL
我在后面我的代码尝试这个...
MyHiddenField.Value = Request.URL + "/thank_you.aspx";
但它返回我在/thank_you.aspx页面
我在做什么错了?
我有我的本地主机和一个活网站。我有一个网址,如果它在本地主机的URL应该去本地主机/网站/ thank_you.aspx如果其直播http://mylivesite.com/thank_you.aspx本地主机和活网站的Request.URL
我在后面我的代码尝试这个...
MyHiddenField.Value = Request.URL + "/thank_you.aspx";
但它返回我在/thank_you.aspx页面
我在做什么错了?
太试试这个,我甚至补充方案,以防万一你去https :)的
编辑:另外添加的端口(感谢亚历克斯)在为了超级骗子超面向未来的:)
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");
@Alex谢谢你:) – mattytommo
不客气:)另外,如果在某些部署场景中不是80,应该留意端口号。 – Alex
对于https选项为+1。 OP的另一个好的考虑是使它成为一个全局函数,他可以称之为'MakeURL(“/ thank_you.aspx”)' – MikeSmithDev
有一个内置类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));
}
为什么不使用相对路径:'MyHiddenField.Value =“/thank_you.aspx”;'? – Alex
@Alex也许它被用来创建一个电子邮件等链接 – MikeSmithDev
你的意思是'http:// localhost/something'应该“转到”'http:// localhost/site/thank_you.aspx'但是那么'http:// mylivesite.com/something'应该转到'http:// mylivesite.com/thank_you.aspx'?你的网站在'localhost'上? –