Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
aspnet多视图jquery ajax_Jquery_Asp.net_Ajax_Multiview - Fatal编程技术网

aspnet多视图jquery ajax

aspnet多视图jquery ajax,jquery,asp.net,ajax,multiview,Jquery,Asp.net,Ajax,Multiview,我遇到了一个非常奇怪的情况 我有一个带有AspNet多视图控件的窗体。 我想每N秒保存一次它的内容。因此,我每N秒发送一个ajax Post请求 问题出现在回发号码10之后。在Post编号8之后,视图状态似乎已损坏,并且不可见视图中的所有控件都失去了它们的值 我的aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="multiview-ajax-bug- test.aspx.cs" Inherits="mult

我遇到了一个非常奇怪的情况

我有一个带有AspNet多视图控件的窗体。 我想每N秒保存一次它的内容。因此,我每N秒发送一个ajax Post请求

问题出现在回发号码10之后。在Post编号8之后,视图状态似乎已损坏,并且不可见视图中的所有控件都失去了它们的值

我的aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="multiview-ajax-bug-    test.aspx.cs"
Inherits="multiview_ajax_bug_test"  Theme=""%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
<title></title>
<script src="JS/jquery-1.10.2.min.js" type="text/javascript"></script>
<script type="text/javascript" src='<%= ResolveUrl("~/JS/auto-save.js") %>'></script>
</head>

<body>

<form id="form1" runat="server">
<div>
    <div id="subnavigation">
        <ul>
            <li>
                <asp:LinkButton ID="lnk_one" runat="server" Text="Page1" Font-Bold="true" OnClick="lnk_one_Click"></asp:LinkButton></li>
            <li>
                <asp:LinkButton ID="lnk_two" runat="server" Text="Page2" OnClick="lnk_two_Click"></asp:LinkButton></li>
            <li>
                <asp:LinkButton ID="lnk_three" runat="server" Text="Page3" OnClick="lnk_three_Click"></asp:LinkButton></li>
            <li>
                <asp:LinkButton ID="lnk_four" runat="server" Text="Page4" OnClick="lnk_four_Click"></asp:LinkButton></li>
        </ul>
        <asp:MultiView ID="ProjectMultiView" runat="server" ActiveViewIndex="0">
            <asp:View ID="vw_one" runat="server">
                one
                <asp:TextBox runat="server" ID="one"></asp:TextBox>
            </asp:View>
            <asp:View ID="vw_two" runat="server">
                two
                <asp:TextBox runat="server" ID="two"></asp:TextBox>
            </asp:View>
            <asp:View ID="vw_three" runat="server">
                three
                <asp:TextBox runat="server" ID="three"></asp:TextBox>
            </asp:View>
            <asp:View ID="vw_four" runat="server">
                four
                <asp:TextBox runat="server" ID="four">
                </asp:TextBox>
            </asp:View>
        </asp:MultiView>
        <div class="clearboth">
        </div>
    </div>
</div>
<script type="text/javascript">

    // save every two minutes
    $(function () {
        var formId = '<%= Form.ClientID  %>';
        var url = location.href;

        var interval = 1 * 1 * 1000; // 1 secs
        setInterval(saveDraft, interval);

        function saveDraft() {
            autoSave(formId, url);
        }

    });
</script>
</form>
</body>
</html>
代码隐藏:

using System;


public partial class multiview_ajax_bug_test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void lnk_one_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_one);
    }

    protected void lnk_two_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_two);
    }

    protected void lnk_three_Click(object sender, EventArgs e)
    {
       ProjectMultiView.SetActiveView(vw_three);
    }

    protected void lnk_four_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_four);
    }
}

是否有任何明显的遗漏,或者是多视图控件上的错误?

因此数据在10秒内损坏?10秒后不会损坏。这取决于ajax post的执行频率。在8 ajax post之后,页面中不可见的aspnet多视图控件的任何视图的viewstate都将丢失。这种情况的奇怪之处在于,我使用Fiddler查看了请求和响应,并且请求始终是相同的(相同的变量和长度)。但是在第8个帖子之后,响应长度会发生变化。也许是某种我无法理解的ASPNET安全机制?
using System;


public partial class multiview_ajax_bug_test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void lnk_one_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_one);
    }

    protected void lnk_two_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_two);
    }

    protected void lnk_three_Click(object sender, EventArgs e)
    {
       ProjectMultiView.SetActiveView(vw_three);
    }

    protected void lnk_four_Click(object sender, EventArgs e)
    {
        ProjectMultiView.SetActiveView(vw_four);
    }
}