Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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#_Asp.net_.net - Fatal编程技术网

在c#asp.net中,如何在视图状态下的不同回发之间保存值?

在c#asp.net中,如何在视图状态下的不同回发之间保存值?,c#,asp.net,.net,C#,Asp.net,.net,我陷入了一个问题,我正在创建一个100个问题的在线测试。每个问题都有四个单选按钮(选项)。我想知道,当我选择选项时,如何使浏览器在按下提交按钮时记住每个问题的选定值。我想在提交按钮上获取值?我使用两个属性,即“CurrentPageNo”和“IncrementCount”,使用viewstate设置/获取其值。 这是我的密码: public void NavigateRecords() { //CurrentPageNo = 1; PagedDataSource pds = ne

我陷入了一个问题,我正在创建一个100个问题的在线测试。每个问题都有四个单选按钮(选项)。我想知道,当我选择选项时,如何使浏览器在按下提交按钮时记住每个问题的选定值。我想在提交按钮上获取值?我使用两个属性,即“CurrentPageNo”和“IncrementCount”,使用viewstate设置/获取其值。 这是我的密码:

public void NavigateRecords()
{
    //CurrentPageNo = 1;
    PagedDataSource pds = new PagedDataSource();
    pds.DataSource = dt.DefaultView;
    pds.AllowPaging = true;
    pds.PageSize = 1;
    // Set the PagedDataSource's current page
    pds.CurrentPageIndex = CurrentPageNo;
    lblCurrentPage.Text = "Page No: " + (CurrentPageNo + 1).ToString() +
        " of "
        + pds.PageCount.ToString();
    btnPrev.Enabled = !pds.IsFirstPage;
    btnNext.Enabled = !pds.IsLastPage;
    btnFirst.Enabled = !pds.IsFirstPage;
    btnLast.Enabled = !pds.IsLastPage;
    btnSubmit.Visible = pds.IsLastPage;

    repeaterItems.DataSource = pds;
    repeaterItems.DataBind();
    SelectedValue = rblOptions.SelectedValue;
    Dictionary<string, string> values = new Dictionary<string, string>();

    for (int j = 3; j < 7; j++)
    {
        values.Add(dt.Rows[IncrementCount][j].ToString(), dt.Columns[j].ToString());
    }

    //var options = repeaterItemsFindControl("rblOptions") as RadioButtonList;
    //options = new RadioButtonList();

    rblOptions.DataSource = values;
    rblOptions.DataTextField = "Key";
    rblOptions.DataValueField = "Value";
    rblOptions.DataBind();
    lblMsg.Text = rblOptions.SelectedValue;
}
public void导航记录()
{
//CurrentPageNo=1;
PagedDataSource pds=新的PagedDataSource();
pds.DataSource=dt.DefaultView;
pds.allowpage=true;
pds.PageSize=1;
//设置页面数据源的当前页面
pds.CurrentPageIndex=CurrentPageNo;
lblCurrentPage.Text=“页码:”+(CurrentPageNo+1).ToString()+
“的”
+pds.PageCount.ToString();
btnPrev.Enabled=!pds.IsFirstPage;
btnNext.Enabled=!pds.IsLastPage;
btnFirst.Enabled=!pds.IsFirstPage;
btnLast.Enabled=!pds.IsLastPage;
btnSubmit.Visible=pds.IsLastPage;
repeaterItems.DataSource=pds;
repeaterItems.DataBind();
SelectedValue=rblOptions.SelectedValue;
字典值=新字典();
对于(int j=3;j<7;j++)
{
Add(dt.Rows[IncrementCount][j].ToString(),dt.Columns[j].ToString());
}
//var选项=作为RadioButtonList的repeaterItemsFindControl(“rblOptions”);
//选项=新建RadioButtonList();
rblOptions.DataSource=值;
rblOptions.DataTextField=“Key”;
rblOptions.DataValueField=“Value”;
rblOptions.DataBind();
lblMsg.Text=rblOptions.SelectedValue;
}

您需要创建一个会话来存储您的答案。因此,创建一个
列表
或类以放入该会话。 然后在页面加载时检查会话是否存在。如果它确实将会话强制转换为其原始类型

List<string> Questions;

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["questions"] != null)
    {
        Questions = Session["questions"] as List<string>;
    }
    else
    {
        Questions = new List<string>();
        Session["questions"] = Questions;
    }
}

如果您继续按
按钮1
,您将看到答案数量增加。

您需要创建一个会话来存储您的答案。因此,创建一个
列表
或类以放入该会话。 然后在页面加载时检查会话是否存在。如果它确实将会话强制转换为其原始类型

List<string> Questions;

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["questions"] != null)
    {
        Questions = Session["questions"] as List<string>;
    }
    else
    {
        Questions = new List<string>();
        Session["questions"] = Questions;
    }
}

如果您继续按
按钮1
,您将看到答案数量增加。

使用两个浏览器。一个用于主页,当按下按钮时打开第二个。第一页将包含按下的按钮。您真的需要它们吗?不能将它们存储在会话中吗?不管怎样(viewstate或sessoin),我需要在按下submit按钮时选择所有问题的值。我认为默认情况下,所有Asp.net控件都有viewstate,并且回发时不会丢失数据。请使用两个浏览器。一个用于主页,当按下按钮时打开第二个。第一页将包含按下的按钮。您真的需要它们吗?不能将它们存储在会话中吗?无论如何(viewstate或sessoin)我是否需要按submit按钮时所有问题的选定值我认为默认情况下,所有Asp.net控件都具有viewstate,并且在回发时不会丢失数据?解释会话将其值保存在何处(服务器内存)以及网站是否水平缩放也很有用,它不能保证相同的请求通过相同的服务器,这将使页面之间的所有数据丢失。。。也许可以让他指向Memcache/Redis,或者让事情简单一些:一个带有json的cookie,带有
id
,还有
answer
:)谢谢。但是保留单选按钮列表的值呢。我正在使用问题。在单选按钮列表的onselectedIndexchanged方法中添加(rblOptions.SelectedValue),但在按下submit按钮时,它会给我上次尝试的问题的选定值为什么?@WaqasQureshi,这取决于您如何将数据设置到RadioButtonList。你是不是在网上购物支票上这么做的?这救了我的命数小时的文字工作。解释会话将其值保存在何处(服务器内存)也很有用,如果网站水平扩展,则不能保证相同的请求通过相同的服务器,这将使页面之间的所有数据丢失。。。也许可以让他指向Memcache/Redis,或者让事情简单一些:一个带有json的cookie,带有
id
,还有
answer
:)谢谢。但是保留单选按钮列表的值呢。我正在使用问题。在单选按钮列表的onselectedIndexchanged方法中添加(rblOptions.SelectedValue),但在按下submit按钮时,它会给我上次尝试的问题的选定值为什么?@WaqasQureshi,这取决于您如何将数据设置到RadioButtonList。你是不是在网上购物支票上这么做的?这救了我的命一小时又一小时的文字劳动。