gpt4 book ai didi

asp.net - 如何重定向到索引操作,但从 url 中删除 "Index/"?

转载 作者:行者123 更新时间:2023-12-04 11:07:59 25 4
gpt4 key购买 nike

我目前正在尝试从第二个 Controller (搜索 Controller )重定向到一个 Controller (公司 Controller )的索引。在我的搜索 Controller 中,我有以下代码:

RedirectToAction("Index", "Company", new { id = redirectTo.Id, fromSearch = true, fromSearchQuery = q })

但不幸的是,这让我:
/Company/Index/{id}?fromSearch=true&fromSearchQuery={q}

其中 fromSearch 和 fromSearchQuery 是不总是使用的可选参数。

有没有办法直接从 RedirectToAction 获取 URL,这样我就可以在切掉字符串的 Index 部分后将其封装在 Redirect 中,或者使用可选参数设置路由?

最佳答案

如果您只需要 URL,可以使用 Url.Action helper 接受所有相同的参数,但只返回 URL。

但是,创建带有可选段和附加段的路线更加困难,因为在中间省略一个段只会导致所有其他段向下移动,而您最终会得到 id。代替您的action .解决方案是在省略可选值时创建与段数和段位置匹配的路线。您还可以使用路由约束来进一步限制路由匹配的内容。

例如,您可以创建此路由:

routes.MapRoute(
name: "IndexSearch",
url: "{controller}/{id}",
defaults: new { action = "Index" },
constraints: new { action = "Index" }
);

再加上它之后的默认路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

将导致助手调用:
RedirectToAction("Index", "Company", new { id = redirectTo.Id, fromSearch = true, fromSearchQuery = q })

创建 URL:/Company/{id}/?fromSearch=true&fromSearchQuery=q 当 action是索引或 Action 被省略。如果提供了操作并且不是索引而不是路由,则将遵循默认路由。

关于asp.net - 如何重定向到索引操作,但从 url 中删除 "Index/"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18679978/

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