【发布时间】:2016-02-24 04:07:44
【问题描述】:
如何从 c# 代码生成绝对 url?
我想生成这样的网址:localhost/{controller}/{action}/{id}。有没有办法在 c# 中做到这一点,就像在视图中一样?
它不会在控制器内部生成,而是在 ViewModel 内部生成。
【问题讨论】:
标签: asp.net-mvc
如何从 c# 代码生成绝对 url?
我想生成这样的网址:localhost/{controller}/{action}/{id}。有没有办法在 c# 中做到这一点,就像在视图中一样?
它不会在控制器内部生成,而是在 ViewModel 内部生成。
【问题讨论】:
标签: asp.net-mvc
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme);
只需添加Request.Url.Scheme。它的作用是向 url 添加一个协议,强制它生成一个绝对 URL。
【讨论】:
Url.RouteUrl。
Url.Action("Index", null, null, Request.Url.Scheme) .
查看类似的问题Using html actionlink and URL action from inside controller。似乎与您的要求相似且可重复使用。
【讨论】:
如果您不想“构建” 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
【讨论】: