Route属性隐藏操作

时间:2016-01-11 22:16:44

标签: asp.net-mvc asp.net-mvc-5

为什么Route属性隐藏|应用于其他方法?

[HttpGet]
[Route("Issues/ReportIssue")]
public ActionResult ReportIssue()

没有Route属性的操作停止工作

[HttpPost]
public ActionResult ReportIssue(IssueModel viewModel)

jQuery返回"未找到"错误

如果重命名Post操作或添加Route属性,则一切正常。 Route属性是否有任何优先级规则?

1 个答案:

答案 0 :(得分:0)

我尝试了以下代码示例 -

[HttpGet]
[Route("Products/Create")]
public ActionResult Create()
{
      ProductCategory category = new ProductCategory();
      category.ProductCategoryId = 1;
      return View(category);
}

[HttpPost]
public ActionResult Create(ProductCategory category)
{
      return View(category);
}

我可以看到这种方法没有任何问题。在我的情况下,控制器名称为" Product",如果我将路由属性指定为"产品/创建"则以下代码有效。 (与控制器名称不同),或"产品/创建"。所以不确定,为什么你会遇到这个问题。

Get和Post操作也应该在没有route属性的情况下工作,因为它们正在工作。属性路由是MVC 5中新增的内容,可以更好地控制路由。但是,这不是必须使用的。传统的路线应该可以正常工作。

看看 - http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx文章。