如何为asp.net页面中的所有操作声明公共变量

时间:2014-10-07 08:07:05

标签: c# asp.net

我有一个asp.net页面,其中包含next和back按钮以及变量“i”,每次单击next或back按钮,变量“i”将增加或减少1.那么如何声明变量i? 我不想使用“public static int i” 我应该使用会话还是查看状态? 有没有更好的方法来做到这一点?

5 个答案:

答案 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