[英]viewstate is not loading/missing for default.aspx
我的默认页面在执行回发时不包括视图状态,即视图状态丢失,当我在调试期间查看它们时,它没有包含在 forms 或参数 collections 中。 这也会导致 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
问题是,当 asp.net 呈现<form id="Form1" method="post" runat="server">
时,生成的 html 是<form id="Form1" method="post" action="./">
而不是<form id="Form1" method="post" action="./Default.aspx">
。
这导致帖子进入索引而不是页面本身,并且在页面加载之前的某个时间被过滤掉。
解决方法很简单,填写action让它直接跳转到页面,action="Default.aspx"。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.