如何从C#代码生成绝对网址?ASP.NET MVC从C#代码创建绝对网址代码
我想生成一个这样的网址:localhost/{controller}/{action}/{id}
。有没有办法在c#中做到这一点,就像它可以在视图中做到的一样?
它不会在控制器内部产生,而是在ViewModel内部产生。
如何从C#代码生成绝对网址?ASP.NET MVC从C#代码创建绝对网址代码
我想生成一个这样的网址:localhost/{controller}/{action}/{id}
。有没有办法在c#中做到这一点,就像它可以在视图中做到的一样?
它不会在控制器内部产生,而是在ViewModel内部产生。
string absUrl = Url.Action("Index", "Products", null, Request.Url.Scheme);
只需添加Request.Url.Scheme
。它所做的是将协议添加到强制它生成绝对URL的url中。
检查出类似的问题Using html actionlink and URL action from inside controller。似乎是相似的,可以重复使用以满足您的要求。
OP表示,它不会内部控制器,但一个视图模型内产生。 – 2011-10-20 10:06:44
如果你不想以“建”的网址,只希望当前页面的完整路径,这将这样的伎俩
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
谢谢,这个隐藏得很好,我差点使用`Url.RouteUrl`。 – Peter 2012-04-24 14:10:24