5

ローカルホストとライブサイトがあります。私はURLを持っており、ローカルホストにある場合はその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に行く場合に備えて、私もスキームを追加しました:)

編集:また、スーパーデュパースーパーフューチャープルーフになるためにポートを追加しました(ありがとうアレックス):)

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 に答える