5

我有我的本地主机和一个实时站点。我有一个 url,如果它在 localhost 中,则 url 应该去 localhost/site/thank_you.aspx,如果它是实时的http://mylivesite.com/thank_you.aspx

我已经在我的代码中尝试过这个......

MyHiddenField.Value = Request.URL + "/thank_you.aspx";

但它返回了我在 /thank_you.aspx 上的页面

我究竟做错了什么?

4

3 回答 3

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");
于 2013-01-24T20:17:27.553 回答
2

有一个内置类UriBuilder

var url = Request.Url;
var newurl = new UriBuilder(url.Scheme, url.Host, url.Port, "thank_you.aspx")
                 .ToString();
于 2013-01-24T20:29:00.747 回答
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));
}
于 2013-01-26T05:28:52.123 回答