ASP.NET MVC Action ссылки в собственном классе - PullRequest
0 голосов
/ 13 октября 2009

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 13 октября 2009

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

1 голос
/ 13 октября 2009

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

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

 void GenerateLinks(HtmlHelper html) { ... }
 void GenerateLinks(UrlHelper url) { ... }
 void GenerateLinks(ControllerContext context) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...