【发布时间】:2020-07-29 18:53:27
【问题描述】:
我的默认页面在回发时不包括视图状态,即视图状态丢失,当我在调试期间查看它们时,它不包含在表单或参数集合中。这也会导致 IsPostBack 属性显示为 False,并且不会调用与回发关联的事件。
我的第一个想法是某个地方的视图状态被关闭了,但我已经在页面和所有控件上明确设置了它(页面非常小,只有一个按钮和一个列表链接)。仍然没有运气。有趣的是,这仅在页面的初始加载时发生,如果我点击其中一个链接然后返回默认页面,则视图状态存在。
为什么不创建或生成视图状态?我没有收到任何验证错误。我注意到的第一个症状是服务器事件没有被触发,但这是有道理的,我看到视图状态不存在,我只是不知道为什么它丢失了。我在页面上确实有一个表单,并且控件在该表单内(当我从其他地方返回页面时,它们都可以工作,而不是在初始登陆时)。
更新:有人想要一些代码,这是最低要求
<%@ Page Language="vb" AutoEventWireup="false" Inherits="Mysite._default" Codebehind="default.aspx.vb" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
<link href="Includes/Style.css" type="text/css" rel="stylesheet">
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:Button CssClass="Button" Id="cmdDone" Text="Done" runat="server" />
</form>
</body>
</html>
Partial Class _default
Inherits Page
Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack andalso request.HttpMethod = "Post" andalso ViewState("test") is nothing Then
Throw new Exception("No, viewstate")
End If
ViewState("test") = true
End Sub
End Class
【问题讨论】:
-
不看代码很难给出答案。
-
@sh1rts:在这种情况下,不要认为这会有所帮助,但我已经添加了一个最小示例