gpt4 book ai didi

asp.net-mvc - ASP.NET MVC RedirectToAction 传递错误的参数值?

转载 作者:行者123 更新时间:2023-12-04 01:16:30 27 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC 1.0。我有一个 ActionResult,它从下拉列表中接收一个带有值的表单帖子。然后它重定向到 ActionResult,将该值作为参数传递。这是我的 2 ActionResult 方法:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FindPromo()
{
var promoId = Convert.ToInt32(Request.Form["ddlPromotion"]);
return RedirectToAction("GetPromo", new { id= promoId });
}

public ActionResult GetPromo(int id)
{

if (promoId > 0)
{
var model = GetModel(id);

if (model.Promo != null)
{
return View("Promo", GetModel(id));
}
}

return RedirectToAction("NotFound");
}

当我调试这个时,下拉列表中的值从我的表单中正确提取,但在重定向时,来自先前请求的不同值作为 GetPromo 方法上的 promoId 值通过。即使我完全关闭页面并重新加载它,也会发生这种情况,几乎就像它缓存在某处一样。我知道这很简单,但我以前从未遇到过。

编辑:

我将参数名称从 promoId 更改为 id,并更新了我的路由表。我已经更新了上面的代码示例,这里是我的路线:
    routes.MapRoute("GetPromo", "{controller}/GetPromo/{id}",
new { controller = "Promo", action = "GetPromo" });

routes.MapRoute("FindPromo", "{controller}/FindPromo/{id}",
new { controller = "Promo", action = "FindPromo" });

但是,我仍然使用参数获得相同的结果。

最佳答案

您是否尝试过使用默认路由设置:{controller}/{action}/{id}?
另外,这些是你唯一的路线吗?路由按顺序进行评估,因此如果匹配,先前的路由可以覆盖下面的路由。
Phil Haack 在他的博客中发布了一个路由调试器 haacked.com

您还可以使用:RouteTable.Routes.GetVirtualPath(),传递 ViewContext.RequestContext 和 RouteValueDictionary 并查看生成的 Url。

关于asp.net-mvc - ASP.NET MVC RedirectToAction 传递错误的参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735618/

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