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