【问题标题】:viewstate is not loading/missing for default.aspx视图状态未加载/缺少 default.aspx
【发布时间】: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:在这种情况下,不要认为这会有所帮助,但我已经添加了一个最小示例

标签: asp.net viewstate


【解决方案1】:

问题在于,当 asp.net 呈现 &lt;form id="Form1" method="post" runat="server"&gt; 时,生成的 html 是 &lt;form id="Form1" method="post" action="./"&gt; 而不是 &lt;form id="Form1" method="post" action="./Default.aspx"&gt;

这会导致帖子进入索引而不是页面本身,并在页面加载之前的某个时间被过滤掉。

解决方法很简单,填写action,直接进入页面,action="Default.aspx"。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多