ASP.NET MVC создает абсолютный URL из кода C # - PullRequest
25 голосов
/ 27 ноября 2010

Как мне сгенерировать абсолютный URL из кода c #?

Я хочу сгенерировать URL, как это: localhost/{controller}/{action}/{id}.Есть ли способ сделать это в C #, например, как это можно сделать в представлениях?

Это не будет генерироваться внутри контроллера, но внутри ViewModel.

Ответы [ 4 ]

69 голосов
/ 14 декабря 2010
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme);

Просто добавьте Request.Url.Scheme.Это добавляет протокол к URL, который вынуждает его генерировать абсолютный URL.

1 голос
/ 28 ноября 2010

Ознакомьтесь с похожим вопросом Использование html actionlink и URL action из контроллера . Кажется, чтобы быть похожим и многоразовым для ваших требований.

0 голосов
/ 23 февраля 2016

По состоянию на последнее обновление до MVC вы можете использовать ниже overload для Url.Action

string url=Url.Action("ActionName", "Controller", 
                       new RouteValueDictionary(new { id= someid }), 
                                                      //url param
                       HttpContext.Request.Url.Scheme, 
                       HttpContext.Request.Url.Host);

, который генерирует

http://localhost:port/Controller/ActionName?id=someid
0 голосов
/ 11 сентября 2011

Если вы не хотите «создавать» URL-адрес и хотите просто указать полный путь к текущей странице, это поможет вам

Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)

Я знаю, что он не такой элегантный, как метод расширения, но думал поделиться им в образовательных целях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...