gpt4 book ai didi

.net - ASP.NET MVC Html.ActionLink 结果 URL - 编码方式

转载 作者:行者123 更新时间:2023-12-04 15:28:38 25 4
gpt4 key购买 nike

我在 MVC Controller 中创建了大量 Action 。

public ActionResult DoSmth1(string token)
public ActionResult DoAnother2(string token)

当我必须调用 ActionLink 时..
=Html.ActionLink<SomeController>( x=> x.DoSmth(item.property), item.property)
=Html.ActionLink<AnotherController>( x=> x.DoAnother(item.property), item.property)

...它为我生成了不同的 URL:
/Some/DoSmth/stringvalue
/Another/DoAnother?property=stringvalue

在哪里设置它构建 URL 的方式?我完全没有想法...((

好的,有一些路灯:
- 如果属性名称与路由模式中使用的相同 - 例如 Controller 、操作和 id - MVC 将 总是 使用路由构建器 (/c/a/id)。

这有点帮助(所以 - 尽可能将参数命名为“id” ))

但总体问题仍然有效......

must be named the same as the token in the route



正是 - 我首先有这个想法。

但是 - 现在我只有默认路由 ({controller}/{action}/{id}) 但仍然有带有斜杠“属性”的 URL ......这很奇怪。
  • 还有一种作弊方式 - 创建一个精确的路由,将给定的 Controller 与其参数名称相匹配 - 似乎这将是最终的答案 - 但我仍然不想这样做((
  • 最佳答案

    您没有显示您的路线,但在此示例中几乎可以肯定您会遇到不同的路线。操作的参数必须与路由中的 token 命名相同,以便生成的 URL 将路由 token 与 ActionLink 的 lambda 形式匹配。与路由标记不匹配的任何内容都将作为查询字符串参数附加到您的第二个 URL 中。查看查询字符串参数是您隐式传递的名称(在本例中为“属性”)与路由标记不匹配的有力证据。由于您使用相同的 token 名称获得不同的结果,因此我得出结论,您走的是不同的路线。顺便说一句,我建议使用 RouteLink 而不是 ActionLink 来构建链接,这样您就可以确定您将匹配哪条路线。

    关于.net - ASP.NET MVC Html.ActionLink 结果 URL - 编码方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488908/

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