Мне нужно создать несколько URL-адресов в модели в ASP.NET MVC. Я хотел бы вызвать что-то вроде UrlHelper.Action (), который использует маршруты для генерации URL. Я не против заполнить обычные пробелы, такие как имя хоста, схема и так далее.
Есть ли способ, который я могу вызвать для этого? Есть ли способ построить UrlHelper?
asp.net-mvc
urlhelper
pupeno
источник
источник
Ответы:
Полезный совет: в любом приложении ASP.NET вы можете получить ссылку на текущий HttpContext
который получен из System.Web. Поэтому в любом месте приложения ASP.NET MVC будет работать следующее:
Пример:
Вызов
Link
свойства созданного объекта MyModel вернет действительный URL-адрес для просмотра модели на основе маршрутизации в Global.asax.источник
using
для обоихSystem.Web
иSystem.Web.Mvc
Мне нравится ответ Омара, но он не работает для меня. Для справки: вот решение, которое я использую сейчас:
источник
UrlHelper может быть создан из действия Controller со следующим:
За пределами контроллера UrlHelper может быть создан путем создания RequestContext из RouteTable.Routes RouteData.
(Основано на ответе Брайана с добавлением незначительного исправления кода.)
источник
var urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);
this.ControllerContext.RequestContext
естьHttpRequestContext
, и конструкторUrlHelper
ожидает aRequestContext
. Оба класса не связаны.Да, вы можете создать его экземпляр. Вы можете сделать что-то вроде:
RouteTable.Routes
является статическим свойством, поэтому вы должны быть в порядке; чтобы получитьHttpContextBase
ссылку,HttpContextWrapper
берет ссылкуHttpContext
иHttpContext
доставляет это.источник
Перепробовав все остальные ответы, я получил
Ненавистники будут ненавидеть ¯ \ _ (ツ) _ / ¯
источник
Я пытался сделать что-то подобное изнутри страницы (за пределами контроллера).
UrlHelper не позволил мне построить это так же легко, как Паблос, но потом я вспомнил старый трюк, чтобы эффективно сделать то же самое:
источник
Я думаю, что вы ищете это:
источник