asp.net – 在ASP MVC 6中为多个路由分配给同一个控制器或者动作
|
题: 有没有办法在ASP.NET MVC 6应用程序中将两个不同的路由(带有参数)分配给同一个控制器? 我试过了: 我尝试使用多个路由属性到控制器类和单个操作,没有工作. 笔记: >我正在使用ASP.NET Core 1.0 RC1. 例: [Produces("application/json")]
[Route("api/v2/Log")]
/// The old route is "api/LogFile" which I want to be still valid for this controller.
public class LogController : Controller {
[HttpGet("{id}",Name = "download")]
public IActionResult GetFile([FromRoute] Guid id)
{
// ...
}
}
在上面的例子中:api / LogFile / {some-guid}是旧路由,api / v2 / log / download / {some-guid}是新的路由.我需要两条路线调用相同的动作. 解决方法在新的RC1应用程序中,控制器级别有两个路由属性可以正常工作:[Produces("application/json")]
[Route("api/[controller]")]
[Route("api/old-log")]
public class LogController: Controller
{
[HttpGet]
public IActionResult GetAll()
{
return Json(new { Foo = "bar" });
}
}
http:// localhost:62058 / api / log和http:// localhost:62058 / api / old-log返回预期的json.我看到的唯一注意事项是,您可能需要设置属性的名称/顺序属性,以防您需要为其中一个操作生成URL. 有2个属性的动作也可以: [Produces("application/json")]
public class LogController : Controller
{
[Route("api/old-log")]
[Route("api/[controller]")]
[HttpGet]
public IActionResult GetAll()
{
return Json(new { Foo = "bar" });
}
}
但是,在控制器级别和特定操作路线上设置一般路由时,您需要小心.在这些情况下,控制器级别的路由被用作前缀,并被添加到url(有关这个行为here的很好的文章).这可能会让您得到一组不同于您期望的URL,例如: [Produces("application/json")]
[Route("api/[controller]")]
public class LogController : Controller
{
[Route("api/old-log")]
[Route("")]
[HttpGet]
public IActionResult GetAll()
{
return Json(new { Foo = "bar" });
}
}
在最后一种情况下,您的应用程序将侦听的2条路由将是http:// localhost:62058 / api / log和http:// localhost:62058 / api / log / api / old-log,因为api / log被添加为在动作级别定义的所有路由的前缀. 最后,另一个选择是为新路由使用属性,然后使用启动类中的路由表来提供照顾旧api的特定路由. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC的MS应用程序示例?
- asp.net-mvc – JSP相当于ASP.NET MVC的部分视图?
- asp.net-mvc-3 – mvc3 OutputCache RemoveOutputCacheItem
- asp.net-mvc – 使用asp.net mvc 2功能与火花浏览引擎
- asp.net – System.Web.Security.AntiXss.AntiXssEncoder与
- 如何在asp.net中的gridview中添加带有按钮的列?
- asp.net-mvc-3 – 在Post上,下拉列表SelectList.SelectedVa
- asp.net – 使用纯CSS定义asp:GridView的全局网站样式(不使
- 从VS发布到Azure时无法更改目标运行时
- asp.net-mvc – ASP.NET MVC本地化最佳实践?
- asp.net-mvc – MVC动作过滤器集合已修改;枚举操
- ASP.NET路由 – 自定义路由完全跳过Global.asax中
- 配置 – ASP.NET Web Api:项目需要SQL Server E
- ASP.NET MVC中的“Generic”OpenID 5
- asp.net – 如何在Entity框架中添加表?
- asp.net-mvc – 为什么ASP.NET在静态图像请求上形
- ASP.NET将整数绑定到CheckBox的Checked字段
- asp.net – 如何配置IIS以接受POST请求?
- asp.net-mvc – 如何仅刷新MVC 5中的部分索引页面
- asp.net-mvc – 是否可以为post和get提供重复的动
