Хорошо, я внезапно вспомнил, как только я написал «если бы я мог вызвать Url.Helper
» в вопросе.
Несмотря на то, что метод Content
класса UrlHelper
общедоступен, выне может использовать его из-за пределов контроллера, например, так:
class BusinessObject
{
void DoSomething()
{
var url = System.Web.Mvc.UrlHelper.Content("~/Controller/Action/param");
}
}
, потому что внутренне он вызывает другой метод, передавая ему объект HttpContext
, например:
public virtual string Content(string contentPath)
{
return GenerateContentUrl(contentPath, RequestContext.HttpContext);
}
Однако это GenerateContentUrl
метод, который он вызывает, также public
. И это также static
, поэтому нет необходимости создавать UrlHelper
объект. Итак, мы можем назвать это так:
var virtualPath = System.Web.Mvc.UrlHelper.GenerateContentUrl(
"~/Action/Controller/Param",
new HttpContextWrapper(HttpContext.Current));