我正在开发我的第一个MVC项目并在我的控制器中使用属性路由。我的一个动作有两个可能的路径路径,我有一个小问题。路线本身正在工作,但生成的actionLinks并不是我喜欢的。
路线:
[Route("add")]
[Route("{parentId:int?}/add")]
ActionLink定义:
@Html.ActionLink("Add Category", "Add", "Category", new { parentId = @Model.CurrentCategoryId}, new { @Class = "btn btn-primary"})
这样可行,但是当currentCategoryId不为null时,生成的链接为:
/categories/add?parentId=2
但我希望看到的(当您手动滚动网址时拾取)是:
/categories/2/add
无论如何我可以用actionLink或任何其他MVC魔术来实现这个目标吗?
答案 0 :(得分:4)
尝试:
[Route("add", Order = 2)]
[Route("{parentId:int?}/add", Order = 1)]
这仍然可能无效,因为您拥有不需要参数的路由这一事实可能会使路由逻辑短路。另一种选择是命名每条路线,然后明确说明你想要的路线:
[Route("add", Name = "AddCategory")]
[Route("{parentId:int?}/add", Name = "AddCategoryForParentId")]
然后:
@Html.RouteLink("Add Category", "AddCategoryForParentId", new { parentId = @Model.CurrentCategoryId }, ...)