我是MVC3的新手,有一个带有一个动作的控制器。我在控制器类中定义了一些全局属性,并在动作方法中为这些属性赋值。例如:
public class RosterController : Controller
{
int var1;
int var2;
int var3;
public ActionResult Index(int param1)
{
if(param1 ==1)
{
return view(newRosterViewModel(var1+1,var2+2,var3+3));
}
else
{
var1=1;
var2=2;
var3=3;
return view(newRosterViewModel(var1,var2,var3));
}
}
}
在这个代码中,第一次赋值给var1
,var2
,var3
。第二次我需要这些值,但值为空。
我尝试了TempData,但它也没有价值。
4条答案
按热度按时间6yoyoihd1#
但值为空。
我想你会发现它们的值是0(零),这是整数字段的默认值。
每个Map到
RosterController
的请求都会导致RosterController
的一个 * 新示例 * 被创建,这避免了并发请求混淆其控制器状态的任何问题。要将信息从一个请求持久化到另一个请求,有许多选项(数据库,会话,cookie,应用程序......),但控制器示例的状态不是其中之一。跨请求持久化的正确方法取决于需求。
8hhllhi22#
为什么不让它们静止呢?
或使用缓存或会话
pieyvz9o3#
你可以让你的变量是静态的。让你的变量是静态的意味着它们的生存期会延伸到整个程序的运行。
像这样声明static
但首先请告诉我们您的确切用例
slwdgvem4#
当你渲染视图时,你应该再次将这些变量传递给控制器,因为在每次请求时都会重新创建控制器: