繁体   English   中英

default.aspx 的视图状态未加载/缺失

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM