Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 从上一页检索所选复选框值_C#_Asp.net_Webforms - Fatal编程技术网

C# 从上一页检索所选复选框值

C# 从上一页检索所选复选框值,c#,asp.net,webforms,C#,Asp.net,Webforms,我有一个asp.net webform网站,它在会话中存储数据,并在第3页显示在pg1和pg2上输入的条目 默认情况下,第一页上的第一个复选框是预先选中的,但是如果用户选中/取消选中复选框,当用户在第二页上时,会有一个后退按钮,但是当它被单击时,我不知道如何重新显示选中/取消选中的复选框,因为只有默认复选框被选中 我不熟悉使用ASP和会话存储,所以我可能做了一些完全错误的事情。我如何解决我的处境 我的代码是: HTML <div class="form-group"> &l

我有一个
asp.net webform
网站,它在会话中存储数据,并在第3页显示在pg1和pg2上输入的条目

默认情况下,第一页上的第一个复选框是预先选中的,但是如果用户选中/取消选中复选框,当用户在第二页上时,会有一个后退按钮,但是当它被单击时,我不知道如何重新显示选中/取消选中的复选框,因为只有默认复选框被选中

我不熟悉使用ASP和会话存储,所以我可能做了一些完全错误的事情。我如何解决我的处境

我的代码是:

HTML

<div class="form-group">
     <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">All services</div>
     <div class="col-sm-1">
          <asp:CheckBox ID="Step02AllServices" runat="server" Checked="True" />
     </div>
</div>
<div class="form-group">
     <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">Site content uploading only</div>
     <div class="col-sm-1">
          <asp:CheckBox ID="Step02ContentUploading" runat="server" />
     </div>
</div>
<div class="form-group">
     <div class="col-xs-offset-0 col-sm-offset-4 col-sm-3">Site content &amp; layout checking</div>
     <div class="col-sm-1">
          <asp:CheckBox ID="Step02ContentLayoutChecking" runat="server" Enabled="False" />
     </div>
</div>
我知道这需要在我的
页面中加载
,只是不知道怎么做

下面是我在另一页上的单选按钮和测试字段

if (txtData2.Text == string.Empty && Session["pg2"] != null)
{
     txtData2.Text = Session["pg2"].ToString();

     if (Session["pg2Yes"].ToString() == "Yes")
     {
          pg2Yes.Checked = Session["pg2Yes"].Equals("Yes");
     }

     if (Session["pg2No"].ToString() == "No")
     {
          pg2No.Checked = Session["pg2No"].Equals("No");
     }
}

假设您在第3页上,单击了后退按钮,该按钮将您重定向到第2页

在加载第2页时,您需要检查它是否为新加载(不是回发),以及它是否包含会话上的值。如果两者都为true,则需要从会话中获取值并选中复选框

因此,在Page2Load中编写以下代码

//if you are loading the new page
if (!Page.IsPostBack)
{
    if(Session["Step02AllServices"] != null)
    {
        Step02AllServices.Checked = (bool) Session["Step02AllServices"];
        //similarly assign other checkbox values as they are in session already
    }
    else
    {
        //do normal assignment
    }
}

检查下面的简单实现,并根据您的要求对其进行增强,并且可以使用单个页面完成

aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div id="div1" runat="server">
            <asp:CheckBox ID="CheckBox1" runat="server" />
            <asp:CheckBox ID="CheckBox2" runat="server" /><asp:Button ID="Button1" runat="server" Text="Next" OnClick="Button1_Click" />
        </div>
        <div id="div2" runat="server" visible="false">
            <asp:Button ID="Button2" runat="server" Text="Back" OnClick="Button2_Click"/>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:Button ID="Button3" runat="server" Text="Next" OnClick="Button3_Click"/>
        </div>
         <div id="div3" runat="server" visible="false">
             <asp:Button ID="Button4" runat="server" Text="Back" OnClick="Button4_Click"/>
             <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
        </div>
    </form>
</body>
</html>

我仍然会遇到同样的问题,当我返回页面时,默认复选框会被重新选中,而我选择的复选框并不是您的解决方案几乎可以正常工作。它不起作用的原因是默认选中了我的第一个复选框。我必须找到另一种方法来做这件事。我不认为这与我的问题有关。我想要一个关于如何保留用户选中的复选框的解决方案,但我在您的代码片段中看不到这一点
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div id="div1" runat="server">
            <asp:CheckBox ID="CheckBox1" runat="server" />
            <asp:CheckBox ID="CheckBox2" runat="server" /><asp:Button ID="Button1" runat="server" Text="Next" OnClick="Button1_Click" />
        </div>
        <div id="div2" runat="server" visible="false">
            <asp:Button ID="Button2" runat="server" Text="Back" OnClick="Button2_Click"/>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:Button ID="Button3" runat="server" Text="Next" OnClick="Button3_Click"/>
        </div>
         <div id="div3" runat="server" visible="false">
             <asp:Button ID="Button4" runat="server" Text="Back" OnClick="Button4_Click"/>
             <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
             <asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
        </div>
    </form>
</body>
</html>
using System;

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

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            div1.Visible = false;
            div2.Visible = true;
            div3.Visible = false;
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            div1.Visible = true;
            div2.Visible = false;
            div3.Visible = false;
        }
        protected void Button3_Click(object sender, EventArgs e)
        {
            div1.Visible = false;
            div2.Visible = false;
            div3.Visible = true;
            Label1.Text = CheckBox1.Checked.ToString();
            Label2.Text = CheckBox2.Checked.ToString();
            Label3.Text = TextBox1.Text;
            Label4.Text = TextBox2.Text;
        }
        protected void Button4_Click(object sender, EventArgs e)
        {
            div1.Visible = false;
            div2.Visible = true;
            div3.Visible = false;
        }
    }
}