Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
C# 单击asp.net后退按钮即可管理表单数据(通过会话或视图状态处理除外)_C#_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

C# 单击asp.net后退按钮即可管理表单数据(通过会话或视图状态处理除外)

C# 单击asp.net后退按钮即可管理表单数据(通过会话或视图状态处理除外),c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我在搜索页面上有一个表单,有文本框、下拉框和复选框。选择搜索条件并单击搜索按钮后,搜索结果将显示在另一页上。我正在使用搜索结果页面上的asp按钮返回搜索页面,我希望保留表单数据(文本框、下拉列表/复选框的选择等,我之前为搜索所做的)。我已经通过Session和Viewstate实现了它,所以我想知道管理它的其他方法 非常感谢您的回复, Harish Bhatt您可以使用一个查询字符串,在文本框、下拉框、复选框等中保存所选项目的ID,如下所示: Search.aspx?textId=3&d

我在搜索页面上有一个表单,有文本框、下拉框和复选框。选择搜索条件并单击搜索按钮后,搜索结果将显示在另一页上。我正在使用搜索结果页面上的asp按钮返回搜索页面,我希望保留表单数据(文本框、下拉列表/复选框的选择等,我之前为搜索所做的)。我已经通过Session和Viewstate实现了它,所以我想知道管理它的其他方法

非常感谢您的回复,

Harish Bhatt

您可以使用一个查询字符串,在文本框、下拉框、复选框等中保存所选项目的ID,如下所示:

Search.aspx?textId=3&dropdownId=7
您还需要将这些值传递到结果页面,以便在您想要返回时可以将它们传递回搜索页面

Results.aspx?textId=3&dropdownId=7

注意:随着参数数量的增加,此选项会变得很难使用,但它是
会话
缓存的可行选项。

您可以使用一个查询字符串,在文本框、下拉框、复选框等中保存所选项的ID,如下所示:

Search.aspx?textId=3&dropdownId=7
您还需要将这些值传递到结果页面,以便在您想要返回时可以将它们传递回搜索页面

Results.aspx?textId=3&dropdownId=7

注意:随着参数数量的增加,这种替代方法会变得笨拙,但它是
会话
缓存的一种可行替代方法。

我建议将clientstate信息存储在数据库中,这样做有时很有用!您可以定义相应的行和列来表示需要跟踪的状态信息,或者将所有状态信息放入持久化流(使用json、xml等),只要您不需要搜索或对流化值执行db操作。将其放在数据库中可以方便地迁移到web场,或添加故障转移等。clientstate数据库不必与应用程序的其余部分是同一个数据库,以获得更大的可伸缩性。如果您使用的是sessionstate,还可以配置asp.net以在数据库中保持会话状态,以完成相同的任务。就我个人而言,我将大量使用的clientstate存储在自定义表中,并使用常规的流式方法来获取较低容量的clientstate信息


诀窍是使用sessionid作为键(或sessionid+XKEY),如果需要在同一个表中存储状态信息的多个副本,则需要XKEY。e、 例如,在店面应用程序上,XKEY可能代表页面或类似页面。我还使用它来生成一个唯一的XKEY,并在uri查询参数列表中传递XKEY——您只需在一页到另一页之间持久保存XKEY,而不是一个长的参数列表。

我建议将clientstate信息存储在数据库中的一个文件夹中——这样做有时会很有用!您可以定义相应的行和列来表示需要跟踪的状态信息,或者将所有状态信息放入持久化流(使用json、xml等),只要您不需要搜索或对流化值执行db操作。将其放在数据库中可以方便地迁移到web场,或添加故障转移等。clientstate数据库不必与应用程序的其余部分是同一个数据库,以获得更大的可伸缩性。如果您使用的是sessionstate,还可以配置asp.net以在数据库中保持会话状态,以完成相同的任务。就我个人而言,我将大量使用的clientstate存储在自定义表中,并使用常规的流式方法来获取较低容量的clientstate信息


诀窍是使用sessionid作为键(或sessionid+XKEY),如果需要在同一个表中存储状态信息的多个副本,则需要XKEY。e、 例如,在店面应用程序上,XKEY可能代表页面或类似页面。我还使用它来生成一个唯一的XKEY,并在uri查询参数列表中传递XKEY——您只需将XKEY从一页保存到另一页,而不必保存很长的参数列表。

您可以做很多事情

1.Cross Page Scripting
我们在ASP.NET 1.x版本中面临的问题之一是无法轻松地在页面之间传输数据。由于默认情况下ASP.NET 1.x页面回发到同一页面,并且您无法向另一页面进行回发(除非删除runat=“server”和其他脏乱的内容),访问上一页中的控件变得非常困难,这与经典ASP不同,在传统ASP中,您有一个操作标记来指定新页,并且可以使用Request.Form访问上一页的值

在ASP.NET 2.0中,有一种更有效的方法可以访问上一页中的控件。它使用页面的PreviousPage属性

假设我们有一个带有文本框“Text1”和按钮“Button1”的页面Default.aspx

我们可以通过以下步骤从另一个页面访问Default.aspx中的控件:-

A.将按钮的PostBackUrl属性设置为新页面,如下所示:-

<asp:Button ID="button1" Runat=server Text="submit" PostBackUrl="~/NewPage.aspx" />
  public void page_load()
    {
    if(!IsPostBack)
    {
    TextBox tb = (TextBox)PreviousPage.FindControl("Text1");
    Response.Write(tb.Text);}
    }
请注意,新的文本框tb是使用上一页中控件ID的上一页和FindControl声明和类型转换的。但是,要在新页面中保留回发中的值,最好将文本指定给NewPage.aspx中的文本框或标签,以便其值不会在回发中丢失。背后的原因是,一旦您在同一页中发回,上一页将变得无效

2.Sessions
您可以参考以下链接获取帮助 例子 会话[“值”]=“任何数据”; 您可以在任何页面中访问它

3.Cookies
创建Cookie对象

HttpCookie _userInfoCookies = new HttpCookie("UserInfo");
在其中设置值

_userInfoCookies["UserName"] = "Abhijit";
_userInfoCookies["UserColor"] = "Red";
_userInfoCookies["Expire"] = "5 Days";
//将Cookie添加到当前web响应

Response.Cookies.Add(_userInfoCookies);

你可以做很多事情

1.Cross Page Scripting
我们在ASP.NET 1.x版本中面临的问题之一是无法轻松地在页面之间传输数据。由于ASP.NET 1.x页面在默认情况下回发到同一页面,并且您无法向另一页面进行回发(除非删除runat=“server”和其他脏乱的内容),因此访问上一页面中的控件变得非常困难
if (Request.QueryString["PostBack"] != null)
{
    SearchCriteria objSearch = new SearchCriteria();
    if (Session["SearchCriteria"] != null)
    {
         objSearch = (SearchCriteria)Session["SearchCriteria"];
         txtFirstName.Text = objSearch.strName;
        txtCode.Text = objSearch.strCode;
    }
}