gpt4 book ai didi

asp.net-mvc - AttributeRouting ActionLink 助手呈现查询字符串值而不是在路由中包含参数

转载 作者:行者123 更新时间:2023-12-04 20:06:26 26 4
gpt4 key购买 nike

我正在处理我的第一个 MVC 项目并在我的 Controller 中使用属性路由。我的一项操作有一个小问题,它有两个可能的路线路径。路线本身正在工作,但正在生成的 actionLinks 不符合我的喜好。

路线:

    [Route("add")]
[Route("{parentId:int?}/add")]

ActionLink 定义:
 @Html.ActionLink("Add Category", "Add", "Category", new { parentId = @Model.CurrentCategoryId}, new { @Class = "btn btn-primary"})

这是有效的,但是当 currentCategoryId 不为空时,生成的链接是这样的:
/categories/add?parentId=2

但我想看到的(当你手动滚动 url 时被拾取)是:
/categories/2/add

无论如何,我可以使用 actionLink 或任何其他 MVC 魔法来实现这一目标吗?

最佳答案

尝试:

[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 }, ...)

关于asp.net-mvc - AttributeRouting ActionLink 助手呈现查询字符串值而不是在路由中包含参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com