Ala*_*ain 5 asp.net-mvc-routing asp.net-core-mvc
我正在尝试学习新的MVC 6.我之前从未使用过Microsoft MVC框架.我试图通过使用控制器的URL(urlhelper)添加指向控制器的不同操作的链接来增强简单的教程Web API(主控制器显示API可以执行的操作).但是当我使用时:
this.Url.Action("Get", new {id = id});
Run Code Online (Sandbox Code Playgroud)
我得到一个带URL的查询字符串.我想要一个更安静的URL.
我想在使用属性路由时,我不必映射特定的路由,就像我在WebApi的旧教程中看到的那样.
我必须映射路线吗?为了获得更加宁静的URL样式,我该怎么做?
您可以向控制器中的路由属性添加名称,然后使用扩展方法IUrlHelper.RouteUrl生成 url。
例如,给定以下 Web API 控制器:
[Route("api/[controller]")]
public class UsersController : Controller
{
// GET: api/users
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/users/5
[HttpGet("{id}", Name ="UsersGet")]
public string Get(int id)
{
return "value";
}
//additional methods...
}
Run Code Online (Sandbox Code Playgroud)
api/users/123您可以使用 生成特定 get by id 操作的url @Url.RouteUrl("UsersGet", new { id = 123 })。
使用扩展方法时的问题Url.Action是,如果您有一个像上面示例中那样的控制器,其中有两个名为“Get”的操作,则这将使用不带参数的操作的路由并生成/api/Users?id=123。但是,如果您评论该方法,您会发现它@Url.Action("Get", "Users", new { id = 123 })也为您提供了预期的 url。
| 归档时间: |
|
| 查看次数: |
3480 次 |
| 最近记录: |