在ASP.NET MVC中,我们有用于操作的@Url.Action
。是否有类似于@Url.Api
的路由到/api/控制器的内容?
发布于 2013-07-25 22:41:08
它适用于更简单的Url.Action
形式,因此您不必引用任何路由名称:
Url.Action("ActionName", "ControllerName", new { httproute = "DefaultApi" })
如果某个区域内需要area = ""
,则可能需要添加该URL。(默认情况下,Api控制器位于区域之外。)我使用的是MVC4。
发布于 2015-11-16 22:43:37
希望能够以类型安全的方式生成链接,而不需要硬编码的字符串(控制器名称)?
有一个nuget可以解决这个问题!(这是Mark Seeman写的)
https://github.com/ploeh/Hyprlinkr
其工作原理如下:
路由,像往常一样:
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
获取URL:
var linker = new RouteLinker(request);
var uri = linker.GetUri<FooController>(r => r.GetById(1337));
结果:
http://localhost/api/foo/1337
发布于 2017-10-05 02:13:51
下面是回答这个问题的KISS方法:
如果这是用于创建MVC控制器URL的代码
@Url.Action("Edit", "MyController")
为了获得控制器的API版本的URL (假设您使用相同的控制器名称),您可以使用
@Url.Action("Edit", "api/MyController")
Url.Action方法所做的一切就是在应用程序的根路径上附加控制器名称,后跟操作名称(除非它是“索引”,在这种情况下不会附加它。如果路由值对象具有id属性,则还会将该值附加到URL。
https://stackoverflow.com/questions/9502306
复制相似问题