【发布时间】:2014-11-14 06:00:52
【问题描述】:
我的控制器中有以下路线。一个获取和两个发布操作。都具有相同的动作名称。如here 所述,使用 MultipleButton 属性区分两个发布操作:
[RoutePrefix("incidents")]
public sealed class IncidentsController : Controller
{
[HttpGet, Route("action/{id:int?}/{error?}")]
public async Task<ActionResult> Action(int? id, string error = null)
[HttpPost, Route("action"), ActionName("Action"), ValidateAntiForgeryToken]
[MultipleButton(Name = "action", Argument = "Accept")]
public async Task<ActionResult> ActionAccept(IncidentActionViewModel incident)
[HttpPost, Route("action"), ActionName("Action"), ValidateAntiForgeryToken]
[MultipleButton(Name = "action", Argument = "Reject")]
public async Task<ActionResult> ActionReject(IncidentActionViewModel incident)
}
@Url.Action("Action", "Incidents", new { id = 10 })
上面的路线如下图所示。导航到此 URL 有效,但如果我将 'id' 参数从 Nullable 更改为 int,我开始收到错误。
/incidents/action?id=10
它应该呈现如下所示,如果我将 'id' 参数更改为 int 类型,我不应该得到错误:
/事件/行动/10
我做错了什么?
更新
这是我的路线注册详情:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
【问题讨论】:
-
能否请您分享您的路线注册详情。
-
你遇到了什么错误?
-
错误只是 404 Not Found。这很有意义,URL 解析不正确。
标签: c# .net asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing