2008-12-06 12 views
8

ASP.NET MVC'de yeniyim ve bir görünümde çalışırken tam URL'yi bir eyleme almaya çalışıyorum. Geri arama olarak bir üçüncü taraf API'sine göndermek için buna ihtiyacım var. Örneğin ne gerek benTam sunucu yolunu ASP.NET MVC görünümünde almanın tercih edilen yolu nedir?

<%= Url.Action("action", "controller") %> 

Ben

/denetleyici/eylem

olsun kullandığınızda

http://myserver.com/controller/action

olduğunu

Sunucu taban yolunun buna eklenmesinin birkaç yolunu biliyorum, ancak ASP.NET MVC görünümünde bunu yapmak için tercih edilen yolun ne olduğunu merak ediyorum.

DÜZENLEME: Sadece açıklamak gerekirse, aynı denetleyicideki başka bir eylem için geçerli görünüm/eylemin URL'si değil.

cevap

20

(http/https), diffrent limanlar ve sanal yolları (her zaman sunucu kökü olacak kabul edemeyiz) aşağıdaki çözüm ile sona erdi:

<%= Request.Url.GetLeftPart(System.UriPartial.Authority) + Url.Action("action", "controller")%> 

Bunu daha da güzelleştirmek için bunu bir uzantı yöntemine taşımaya çalışıyorum.

3

Düzenleme: herhangi bir görünüm/denetleyici birleşimi için, bundan daha basit bir şey bulacağınızdan emin değilsiniz. protokolde varyasyonları yakalamak amacıyla

http://<%=Request.Url.Host %><%=Url.Action("action", "controller")%> 
+0

'olurdu ("İşlem", "Kontrolör", null, "http")' daha özlü olurdu .. –

2

How to build absolute action URLs using the UrlHelper class adlı tam yol nesliyle uğraşan bir blog yazısı yazdım. Bunu kesinlikle kontrol etmek isterdin!

/// <summary> 
/// Generates a fully qualified URL to an action method by using 
/// the specified action name, controller name and route values. 
/// </summary> 
/// <param name="url">The URL helper.</param> 
/// <param name="actionName">The name of the action method.</param> 
/// <param name="controllerName">The name of the controller.</param> 
/// <param name="routeValues">The route values.</param> 
/// <returns>The absolute URL.</returns> 
public static string AbsoluteAction(this UrlHelper url, 
    string actionName, string controllerName, object routeValues = null) 
{ 
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme; 

    return url.Action(actionName, controllerName, routeValues, scheme); 
} 
+0

İçeriğinizin bağlantısı burada öldü. Blog gönderilerine bağlantı vermek yerine lütfen gerçek cevabı gönderin. –

+0

@JohnBoker Üzgünüz, geçenlerde yönlendirme kurallarını kırdım. Cevabımı buna göre güncelledim. –

0

Request.Url protokolü dahil olmak üzere tam URL'yi döndürür (http: //), url (www.mydomain.com/mypath) İşte


yazmaya önermek uzantısı ve querystring (? id = 5).
@Request.Url  @*Razor tags*@ 

klasik ASP.NET MVC etiketleri için bu Url.Action @

<%=Request.Url%> <%'Classic tags%> 
İlgili konular