C# 如何在浏览器刷新时保留网页中的数据

C# 如何在浏览器刷新时保留网页中的数据,c#,asp.net,.net,C#,Asp.net,.net,我有一个页面,它从用户那里收集名字、第二个名字、城市、州 名字,第二个名字->这些是文本框。 城市、州->下拉列表 当用户输入名称并选择城市和州时,如果用户按下刷新按钮,则输入的任何数据和选择的详细信息都将消失。如何在浏览器刷新时保留此数据 谢谢, Pacchi如果您使用的是MVC,那么您必须使用它。否则,您必须使用javascript。如果您使用的是MVC,您必须使用它。否则,您必须使用javascript。javascript: 1) localStorage(仅限HTMl5浏览器)-您可以

我有一个页面,它从用户那里收集名字、第二个名字、城市、州

名字,第二个名字->这些是文本框。 城市、州->下拉列表

当用户输入名称并选择城市和州时,如果用户按下刷新按钮,则输入的任何数据和选择的详细信息都将消失。如何在浏览器刷新时保留此数据

谢谢,
Pacchi

如果您使用的是MVC,那么您必须使用它。否则,您必须使用javascript。

如果您使用的是MVC,您必须使用它。否则,您必须使用javascript。

javascript:

1) localStorage(仅限HTMl5浏览器)-您可以将其保存为页面本地存储空间的属性

2) 把它保存在饼干里

3) 将变量附加到URL哈希,以便刷新后可通过location.hash检索该变量

会议:

1) 将其另存为会话变量,并在每次加载页面时通过AJAX检索它

2) 将其保存在cookie中(如果要使用cookie,不妨使用JS方法)

JavaScript:

1) localStorage(仅限HTMl5浏览器)-您可以将其保存为页面本地存储空间的属性

2) 把它保存在饼干里

3) 将变量附加到URL哈希,以便刷新后可通过location.hash检索该变量

会议:

1) 将其另存为会话变量,并在每次加载页面时通过AJAX检索它


2) 将其保存在cookie中(如果要使用cookie,也可以使用JS方法)

除非您在输入内容时存储内容(使用AJAX将其发回服务器),或者将其存储在本地存储或事件(如blur)上的cookie中,否则刷新请求将无法发回这些字段

你必须编写一些客户端代码来保存它们,并在页面加载中再次填充它们,但应该真正考虑到,如果将它们存储在本地机器上,那么它们就成为潜在的“回放”安全风险,其中使用网页的下一个人可以访问以前的人数据。此外,您还需要考虑用户如何清除数据并再次启动。
我想补充一点,如果用户故意按下F5,那么他们真的希望从初始状态重新加载页面并重新启动。如果你使用F5来刷新它们,因为页面的一部分需要更新,那么最好在页面上提供一个按钮或链接,让用户点击它,然后让你做一个Ajax调用来刷新页面的那一部分而不是整个页面。输入内容时(使用AJAX将其发送回服务器)或将其存储在本地存储器或事件(如模糊)上的cookie中,则刷新请求将无法发送回这些字段

你必须编写一些客户端代码来保存它们,并在页面加载中再次填充它们,但应该真正考虑到,如果将它们存储在本地机器上,那么它们就成为潜在的“回放”安全风险,其中使用网页的下一个人可以访问以前的人数据。此外,您还需要考虑用户如何清除数据并再次启动。
我想补充一点,如果用户故意按下F5,那么他们真的希望从初始状态重新加载页面并重新启动。如果您使用F5作为刷新页面的方式,因为页面的一部分需要更新,那么最好在页面上提供一个按钮或链接,让用户点击它,然后让您进行Ajax调用来刷新页面的那一部分而不是整个页面。一个UpdatePanel,以便在计时器1的每一个滴答声中,您都可以将输入的数据保存到会话

例如,在以下标记中:

<div class="row">
    <label>First Name:</label> 
    <asp:TextBox ID="FirstNameTextBox" runat="server"></asp:TextBox>
</div>
<div class="row">
    <label>Last Name:<label> 
    <asp:TextBox ID="LastNameTextBox" runat="server"></asp:TextBox>
</div>
<div class="row">
    <label>City:</label> 
    <asp:DropDownList ID="CityDropDownList" runat="server"></asp:DropDownList>
</div>
<div class="row">
    <label>State:</label> 
    <asp:DropDownList ID="StateDropDownList" runat="server"></asp:DropDownList>
</div>
<div class="row">
    <asp:Button ID="SubmitButton" runat="server" Text="Button" />
</div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Timer ID="Timer1" runat="server" Enabled="true" Interval="5000" OnTick="Timer1_Tick"></asp:Timer>
        </ContentTemplate>
    </asp:UpdatePanel>
每次计时器1滴答作响时,您都可以将表单字段中的数据保存到会话中,如果会话中有任何数据,您可以在页面加载(…)上自动填充它们


确保在用户实际提交表单时清除会话中的数据

您可以在UpdatePanel中使用计时器,以便在计时器1的每个滴答声中,您都可以将输入的数据保存到会话中

例如,在以下标记中:

<div class="row">
    <label>First Name:</label> 
    <asp:TextBox ID="FirstNameTextBox" runat="server"></asp:TextBox>
</div>
<div class="row">
    <label>Last Name:<label> 
    <asp:TextBox ID="LastNameTextBox" runat="server"></asp:TextBox>
</div>
<div class="row">
    <label>City:</label> 
    <asp:DropDownList ID="CityDropDownList" runat="server"></asp:DropDownList>
</div>
<div class="row">
    <label>State:</label> 
    <asp:DropDownList ID="StateDropDownList" runat="server"></asp:DropDownList>
</div>
<div class="row">
    <asp:Button ID="SubmitButton" runat="server" Text="Button" />
</div>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Timer ID="Timer1" runat="server" Enabled="true" Interval="5000" OnTick="Timer1_Tick"></asp:Timer>
        </ContentTemplate>
    </asp:UpdatePanel>
每次计时器1滴答作响时,您都可以将表单字段中的数据保存到会话中,如果会话中有任何数据,您可以在页面加载(…)上自动填充它们


确保在用户实际提交表单时清除会话中的数据

许多人刷新页面以清除表单中的字段,因此这样做可能会破坏可用性。您试图解决的问题是什么?如果我有很多文本框控件用于用户输入,并且用户已经填写了这些控件,我不应该丢失这些数据,因为用户必须再次输入所有详细信息。您的项目是Web窗体还是MVC?我给出了一个关于Web表单的答案,但是如果你使用MVC是不好的。它只是Web表单…许多人刷新页面以清除表单中的字段,因此这样做可能会破坏可用性。您试图解决的问题是什么?如果我有很多文本框控件用于用户输入,并且用户已经填写了这些控件,我不应该丢失这些数据,因为用户必须再次输入所有详细信息。您的项目是Web窗体还是MVC?我给出了一个关于Web表单的答案,但是如果你使用MVC是不好的。它只是Web表单…检查此链接:检查此链接:这是一个很好的解决方案,但我认为在特定的时间间隔内使用计时器勾号以将其保存到会话中是不公平的。需要注意的是,并不是所有用户在提交表单时都会刷新页面。当你说这不公平是什么意思?这不是一个人可以采取的最有效的方法(考虑到资源),但是它很容易实现