wes*_*ton 10 c# resharper razor asp.net-web-api
要链接到Controller/A/<anId>我这样做:
@Html.ActionLink(anId, "Action", "Controller", new {id = anId})
Run Code Online (Sandbox Code Playgroud)
Resharper强调了行动,我可以使用F12导航到它.
但我有一个api控制器的链接:
@Html.ActionLink("API Version", "../api/controller/", new {id = anId})
Run Code Online (Sandbox Code Playgroud)
这没有resharper导航选项,如果重命名控制器,则不会重构.是否有更简洁的方法从剃刀视图链接到APIController?特别是一个Resharper认可.
正如其他答案已经提出的Url.RouteUrl那样,您可以使用如下:
@Url.RouteUrl("DefaultApi", new {httproute= "", controller = "MyApiController"});
Run Code Online (Sandbox Code Playgroud)
您也可以使用快捷方式,Url.HttpRouteUrl如下所示:
@Url.HttpRouteUrl("DefaultApi", new { controller = "MyApiController" })
Run Code Online (Sandbox Code Playgroud)
"DefaultApi"是创建新WebApi项目时的默认路由名称.此字符串应与您在WebApiConfig.cs文件中为HttpRoute提供的任何名称相匹配.
这两种解决方案都只能帮助您生成路由的URL,它们实际上不会为您生成HTML链接.你需要像这样使用它们:
<a href="@Url.HttpRouteUrl("DefaultApi", new { controller = "MyApiController" })">My Link Text</a>
Run Code Online (Sandbox Code Playgroud)
如果您希望Razor为您生成HTML锚标记,则可以使用此方法:
@Html.RouteLink("My Link Text", "DefaultApi", new { controller = "MyApiController" })
Run Code Online (Sandbox Code Playgroud)
此方法提供了一个非常类似的接口,@Html.ActionLink用于常规的Controller/Action链接.
所有这些解决方案都允许点击以与ReSharper一起使用.
您实际上必须更新api路由,因为默认情况下api不包含操作.
所以添加这条路线:
config.Routes.MapHttpRoute(
name: "ActionRoute",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建如下链接:
@Url.RouteUrl("ActionRoute", new {httproute= "", controller = "controller", action = "action"});
Run Code Online (Sandbox Code Playgroud)
编辑
我重新阅读了你的问题并且它没有说出一个动作,所以我只是假设,无论哪种方式,你仍然可以使用@Url.RouterUrl:
@Url.RouteUrl("DefaultApi", new {httproute= "", controller = "controller"});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5574 次 |
| 最近记录: |