我有我的本地主機和一個活網站。我有一個網址,如果它在本地主機的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'上? –