ASP.NET MVC Action ссылки в собственном классе

Мне нужно создать ссылки для действий за пределами контроллеров.

Я могу использовать Html.Action в Views, Url.Action в Controllers. Это хорошо, но ...

У меня есть свой собственный класс, где я хочу создать HTML-код для меню сайта, который используется в site.master. Но как я могу создать ссылки для действий в своем собственном классе? Возможное решение - сгенерировать этот HTML-код в BaseController, но я не хочу этого делать, потому что мой класс должен быть независимым с возможностью генерировать правильные ссылки.

Я гуглил на час, но не нашел решения.

Любая помощь? Спасибо

13.10.2009 09:19:06
2 ОТВЕТА
РЕШЕНИЕ

Генерация Action Link зависит как от конфигурации маршрутизации, так и от контекста контроллера. Оба из них доступны только внутри фактического конвейера ASP.NET MVC. Подумайте об этом: если бы я сказал вам создать ссылку для действия, но ничего не сказал о веб-приложении, как бы вы поступили?

Если вы беспокоитесь о SOLID, почему бы не UrlHelperдобавить в класс , a HtmlHelperили a, ControllerContextкоторый генерирует ссылки для действий?

 void GenerateLinks(HtmlHelper html) { ... }
 void GenerateLinks(UrlHelper url) { ... }
 void GenerateLinks(ControllerContext context) { ... }
1
13.10.2009 09:25:31

Передайте себе ссылку на объект Html, чтобы вы могли использовать ее в своих методах при создании экземпляра класса. Вы можете сделать это, когда создаете экземпляр объекта меню или при каждом вызове функции, если они статичны.

1
13.10.2009 09:27:35