gpt4 book ai didi

c# - Controller MVC 中的全局变量

转载 作者:行者123 更新时间:2023-11-30 19:47:16 25 4
gpt4 key购买 nike

所以,我有这个变量,我通过 POST 从我 View 中的表单推送到 Controller 。

然后我将变量推送到 View 数据中,以便下一个 View 可以使用它,这很好。但是那个 View 不需要表单,所以我无法将同一个变量推送到下一个 Controller 中。简而言之,将信息从 Controller 来回推送到查看和反向是很麻烦的,所以我正在寻找一种方法来使全局变量在 Controller 内保持事件状态,以便所有操作结果都可以访问它......一般我的程序的故障是这样的......

-User types a "name"

-I send "name" to controller.
-I push 'name' into viewstate (query entity framework to get a list of stuff 'name'
has access to) and return that list into the view.
-In that view I can access the 'name' since it was in view state.
-Clicking on a link inside the page takes me to another controller where I need
to get access to 'name' WITHOUT passing view Routing or POST.

显然,最简单的方法是全局声明“名称”,然后它始终可用,但对于我的生活,我不知道该怎么做。

最佳答案

您是否考虑过将其存储在 Session 中? ?

这将允许您从 Controller 或 View 轻松访问它,并且避免了对全局变量的需要。

存储:

[HttpPost] 
public ActionResult YourPostMethod(string name)
{
Session["Name"] = "yourName";
}

访问: *

确保在抓取它之前检查它是否存在:

var whatsMyName = (Session["Name"] != null) ? Session["Name"] : "";

可扩展性考虑

值得一提的是,MVC 应用程序旨在模仿网络并且是无状态的。引入 session 变量会改变这一点,因此请注意它可能会引入有关可伸缩性等方面的问题。

每个在Session中存储数据的用户都会占用服务器层面的资源。根据用户数量和您在 session 中存储的内容,如果这些值变得太大,您可能会耗尽内存。

关于c# - Controller MVC 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031421/

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