Próbuję napisać rozszerzenie helper HTML, które wyprowadza tag obrazu. Potrzebuję uzyskać dostęp (w ramach kodu C#) coś podobnego pomocnika Razor @ @ Url.Content(), aby uzyskać poprawny adres URL dla bieżącego kontekstu. Jak to zrobić?W ASP.NET MVC, w jaki sposób mogę użyć pomocnika Razor @ Url.Content() z kodu C#?
Odpowiedz
Można dostać się do obiektu Request a tym samym adresem URL tak:
string fullUrl = HttpContext.Current.Request.Url.AbsoluteUri;
Dlaczego odpowiedź Tima Scotta została wzięta w górę? –
coś takiego może być?
public static string MyHelper(this HtmlHelper h)
{
string url = h.ViewContext.HttpContext.Request.Url.AbsoluteUri;
}
Można utworzyć własną instancję UrlHelper
przekazując w odpowiednim ViewContext
. Na przykład, aby zrobić to od pomocnika obrazu:
public static string CustomImage(this HtmlHelper html)
{
var Url = new UrlHelper(html.ViewContext.RequestContext);
}
W tym momencie można nazwać Url.Content()
lub jakąkolwiek inną metodę UrlHelper
.
Użyj następujących poleceń, aby naśladować Url.Content w kodzie.
VirtualPathUtility.ToAbsolute("~/url/");
To działało dla mnie na stronie internetowej WebMatrix. Dzięki. – Amir
To jest fajne, czy istnieje jakiś scenariusz/edgecase, gdzie Url.Content() zapewnia inny wynik niż ten? – Zasz
Jeśli adres URL zawiera parametry ciągu zapytania, funkcja VirtualPathUtility.ToAbsolute() spowoduje zgłoszenie błędu, Url.Content nie. –
tak, użyj tego kodu, aby dodać url.content w kodzie to praca, bro i sist
[Próbka] var img_btn_edit = VirtualPathUtility.ToAbsolute ("~/Content/images/ołówek .png ");
Tak, można.
od kontrolera można nazwać:
this.Url.Content("~/Somerelativepath?somethingelse=true");
Musisz być bardziej szczegółowe niż „z kodu”. To wszystko kod. Masz na myśli działanie kontrolera? – liammclennan
Tak, jest swobodnie dostępny dla kodu kontrolera - zobacz moją odpowiedź poniżej http://stackoverflow.com/questions/351937/in-asp-net-mvc-how-can-use-i-url-content-from-code/7396627 # 7396627 –
Dlaczego nie piszesz [metoda rozszerzenia] (http://msdn.microsoft.com/en-us/library/bb383977.aspx)? – JSC