Я полагаю, вы ссылаетесь на свойство Url
в контроллерах, которое имеет тип UrlHelper
.Единственный способ, которым мы смогли смоделировать это, - это извлечь интерфейс IUrlHelper
и создать класс UrlHelperWrapper
, который и реализует его, и переносит нативный тип UrlHelper
.Затем мы определяем новое свойство для нашего BaseController
следующим образом:
public new IUrlHelper Url
{
get { return _urlHelper; }
set { _urlHelper = value; }
}
Это позволяет нам создавать макеты из IUrlHelper
и вставлять их, но в случае по умолчанию использовать экземпляр нашего UrlHelperWrapper
учебный класс.Извините, это долго наматывается, но, как вы обнаружили, это проблема в противном случае.Тем не менее, он подключается без необходимости изменять какие-либо ваши Url.Action
и подобные вызовы в ваших контроллерах.
Вот интерфейс:
public interface IUrlHelper
{
string Action(string actionName);
string Action(string actionName, object routeValues);
string Action(string actionName, string controllerName);
string Action(string actionName, RouteValueDictionary routeValues);
string Action(string actionName, string controllerName, object routeValues);
string Action(string actionName, string controllerName, RouteValueDictionary routeValues);
string Action(string actionName, string controllerName, object routeValues, string protocol);
string Action(string actionName, string controllerName, RouteValueDictionary routeValues, string protocol, string hostName);
string Content(string contentPath);
string Encode(string url);
string RouteUrl(object routeValues);
string RouteUrl(string routeName);
string RouteUrl(RouteValueDictionary routeValues);
string RouteUrl(string routeName, object routeValues);
string RouteUrl(string routeName, RouteValueDictionary routeValues);
string RouteUrl(string routeName, object routeValues, string protocol);
string RouteUrl(string routeName, RouteValueDictionary routeValues, string protocol, string hostName);
}
Я не буду беспокоиться о предоставленииВы определение UrlHelperWrapper
- это просто глупая оболочка, которая реализует это и передает все вызовы UrlHelper
.