Ответ 1
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme);
Просто добавьте Request.Url.Scheme
. Что это значит, это добавить протокол к URL-адресу, который заставляет его генерировать абсолютный URL-адрес.
Как создать абсолютный URL-адрес из кода С#?
Я хочу создать такой URL: localhost/{controller}/{action}/{id}
. Есть ли способ сделать это в С#, как это можно сделать в представлениях?
Он не будет создан внутри контроллера, а внутри ViewModel.
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme);
Просто добавьте Request.Url.Scheme
. Что это значит, это добавить протокол к URL-адресу, который заставляет его генерировать абсолютный URL-адрес.
Просмотрите аналогичный вопрос Использование действия action и URL-адреса html из внутреннего контроллера. Кажется, что вы должны быть похожими и многоразовыми для ваших требований.
Если вы не хотите "строить" URL-адрес и просто хотите полный путь к текущей странице, это сделает трюк
Context.Server.UrlEncode(Context.Request.Url.AbsoluteUri)
Я знаю, что это не так элегантно, как метод расширения, но подумал об обмене его в образовательных целях
Начиная с последнего обновления до 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