2013-01-24 27 views
5

Tôi có máy chủ lưu trữ cục bộ và trang web trực tiếp. Tôi có một url và nếu trong nó localhost url nên đi localhost/site/thank_you.aspx và nếu nó sống http://mylivesite.com/thank_you.aspxYêu cầu.URL cho localhost và trang web trực tiếp

Tôi đã thử điều này trong mã của tôi đằng sau ...

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

nhưng nó trở trang tôi đã truy cập /thank_you.aspx

Tôi đang làm gì sai?

+0

Tại sao không sử dụng đường dẫn tương đối: 'MyHiddenField.Value =" /thank_you.aspx ";'? – Alex

+0

@Alex Có thể nó đang được sử dụng để tạo liên kết cho một email, v.v. – MikeSmithDev

+0

Bạn có nghĩa là 'http: // localhost/something' nên" đi tới "' http: // localhost/site/thank_you.aspx' nhưng rằng 'http: // mylivesite.com/something' nên đi tới' http: // mylivesite.com/thank_you.aspx'? Trang web của bạn ở đâu trên 'localhost'? –

Trả lời

8

Hãy thử điều này, tôi thậm chí thêm vào chương trình trong quá, chỉ trong trường hợp bạn đi https :)

EDIT: cổng Cũng được thêm vào (Cảm ơn Alex) để có siêu Duper siêu tương lai chứng minh :)

MyHiddenField.Value = string.Format(
    "{0}://{1}{2}/thank_you.aspx", 
    Request.Url.Scheme, 
    Request.Url.Host, 
    Request.Url.IsDefaultPort ? string.Empty : ":" + Request.Url.Port); 

EDIT: một gợi ý tốt bởi @MikeSmithDev, đặt nó trong một hàm

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); 
} 

Sau đó, bạn có thể làm:

MyHiddenField.Value = GetUrlForPage("thank_you.aspx"); 
+0

@ Alex cảm ơn cho điều đó :) – mattytommo

+1

Bạn đang chào đón :) Ngoài ra, người ta nên xem ra cho số cổng nếu nó không phải là 80 trong một số kịch bản triển khai. – Alex

+1

+1 cho tùy chọn https. Một xem xét tốt cho OP là để làm cho điều này một chức năng toàn cầu mà ông có thể gọi như 'MakeURL ("/thank_you.aspx ")' – MikeSmithDev

2

Có một built-in Class UriBuilder

var url = Request.Url; 
var newurl = new UriBuilder(url.Scheme, url.Host, url.Port, "thank_you.aspx") 
       .ToString(); 
0

Thêm vào các câu trả lời ở trên. Cho phép hàm xử lý các đường dẫn tương đối. Ví dụ: ~/or ~/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)); 
} 
Các vấn đề liên quan