gpt4 book ai didi

asp.net-mvc - 查询字符串中的 ASP.NET MVC 操作方法参数在第一次请求后不会更改

转载 作者:行者123 更新时间:2023-12-02 00:43:51 24 4
gpt4 key购买 nike

我在需要进行分页的 Controller 中有一个操作方法。我在查询字符串中传递页码和页面大小参数。我遇到的问题是我发出的第一个请求为所有后续调用设置了参数。

public ActionResult GetStuff(string key, int? page, int? pageSize)
{
// do something magical
}

我的路线是这样的:

routes.MapRoute("GetStuff", "Stuff/{key}", new {controller = "Stuff", action = "GetStuff"});

当我开始调试我的应用程序时,我转到了 url/Stuff/My_Stuff 并且关键参数是正确的,并且 page 和 pagesize 都为 null,正如我所期望的那样。如果我使用 url/Stuff/My_Stuff?page=2&pageSize=3 进行第二次调用,那么 page 和 pageSize 的值仍然为空。如果我重新启动应用程序,并让我的第一次调用包含 page 和 pagesize 参数,一切都按我预期的那样工作,但随后在后续调用中更改这些值会保留第一次调用的值。事实上,即使我更改了我的网址,即使是我的路由的关键参数也会保持相同的值。我错过了什么?

我在 Windows Server 2003 上使用 IIS 6.1。我使用的是无扩展路由。此外,实际代码在 VB.Net 中,但我认为这无关紧要。但为了全面披露,以上代码仅代表我的实际代码,而不是实际代码。

最佳答案

我遇到了同样的问题,因为我使用了一个 DI 容器(CaSTLe Windsor)来创建我的 Controller 。问题的出现是因为 Controller 类的生命周期设置,因为 CaSTLe 中的默认生命周期策略是 Singleton(如果你问我这是一个奇怪的默认值)。

似乎因为 Controller 实例在应用程序的生命周期中只创建一次,所以参数会停留在它们的第一个值上。

将生命周期设置为 Transient 解决了我的问题。

关于asp.net-mvc - 查询字符串中的 ASP.NET MVC 操作方法参数在第一次请求后不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1539235/

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