gpt4 book ai didi

c# - RedirectToAction 到相同的操作但没有路由值

转载 作者:行者123 更新时间:2023-11-30 15:43:02 27 4
gpt4 key购买 nike

我将通过一个简单的示例展示我正在尝试做什么。

我有路线

routes.MapRoute("", 
"Message",
new { controller = "Home", action = "Index", myEnum = MyEnum.Message});

routes.MapRoute("",
"",
new { controller = "Home", action = "Index" });

和 Action

public ActionResult Index(/*other values*/, MyEnum? myEnum = null)
{
// do some logic

var redirectToHomeUrl = userLoggedIn && myEnum.HasValue && myEnum.Value == MyEnum.Message;

if (redirectToHomeUrl)
{
// do some logic
return RedirectToAction("Index"); <-- problem here
}

// Other logic
}

基本上,用户会被发送到 mysite.com/Message 并注销并在主页上显示模型对话消息。当他们根据此消息采取行动并重新登录时,页面会重新加载。我检测到他们仍然有消息的 url,并希望将他们重定向回主 url“mysite.com/”。

但是返回 RedirectToAction("Index") 仍然保留 myEnum = MyEnum.Message

RouteData 在重定向后保留,所以我得到一个无限循环。

我试过 RedirectToRoute(null, new { action = "Index", controller = "Home"});

我试过 RedirectToAction("Index", new {})

我试过 RouteData.Values.Clear()

我试过 RouteData.Values["myEnum"] = null;

如果您想知道 RedirectToAction("Index", new { myEnum = null }) 无法编译 :)

关于如何重定向到同一个 Action 但删除现有路由值有什么想法吗?

提前干杯。

最佳答案

RedirectToAction("Index", new { myEnum = null })

可能无法编译,但这样做:

RedirectToAction("Index", new { myEnum = (MyEnum?)null })

如果想知道:)

不过,我不明白重定向到同一操作的意义。如果您只想删除一个值,请手动将其设置为 null(或忽略它)。如果你真的想调用一个不同的函数(但 Action 相同)(似乎不是这样,但谁知道呢),只需直接从你的函数返回该函数的结果。

关于c# - RedirectToAction 到相同的操作但没有路由值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7095270/

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