我有一个asp.net页面,其中包含next和back按钮以及变量“i”,每次单击next或back按钮,变量“i”将增加或减少1.那么如何声明变量i? 我不想使用“public static int i” 我应该使用会话还是查看状态? 有没有更好的方法来做到这一点?
答案 0 :(得分:1)
如果您想在同一页面上使用ViewState
,可以使用private int i
{
get
{
return ViewState["i"] != null ? (int)ViewState["i"] : 0;
}
set
{
ViewState["i"] = value;
}
}
protected void next_Click(object sender, EventArgs e)
{
i++;
}
protected void back_Click(object sender, EventArgs e)
{
i--;
}
并使用它
{{1}}
答案 1 :(得分:1)
View State
是页面的状态及其所有控件。它由ASP.Net框架在帖子中自动维护。
每次页面回发时,它基本上都是从头开始 - 例如,任何初始化为0的内容都将为零。这是因为服务器对页面的最后一次运行一无所知 - 它只知道你点击了一个提交表单的按钮。
当页面被发送回客户端时,页面属性及其控件的更改将被确定并存储在名为_VIEWSTATE的隐藏输入字段的值中。当页面再次回发时,_VIEWSTATE
字段将通过HTTP请求发送到服务器。
AS Incrementing variables in ASP.net on button click
如果你需要在回发中保留一个值,那就是标准方法 是使用
ViewState
:Public Property MyCounter() As Integer Get Dim val As Object = ViewState("MyCounter") Return If(val IsNot Nothing, CInt(val), 0) End Get Set(ByVal value As Integer) ViewState("MyCounter") = value End Set End Property
也可以使用Session,它将持久化值 所有页面和用户会话生命周期的请求。为此 工作,你可以使用上面的相同示例,用。替换ViewState 会话。
答案 2 :(得分:0)
存储值的Session
是个好主意。
会话存储在服务器上,因此不会被篡改。
请注意,会话的ID存储在计算机上的cookie中。
但是,即使您禁用了Cookie,您的会话仍然有效,因为您的会话ID将在您的网址中作为QueryString
传递。
答案 3 :(得分:0)
是ajax按钮吗?
如果没有,并且您尝试实施某种分页,则不是最佳解决方案。为什么不在查询字符串中发送新的i值?
- 在网址路径中包含“i”值:
/Page/<i>
而不是
/Next
等
如果是ajax - 您仍然可以在请求正文或查询字符串中发送“i”值。
答案 4 :(得分:-1)
假设您需要&#34; i&#34;在多页上:
我建议你使用Session
变量
http://msdn.microsoft.com/en-us/library/vstudio/ms178581(v=vs.100).aspx