簡體   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