gpt4 book ai didi

c# - 试图将选定的 DropDownList 传递给 session

转载 作者:太空宇宙 更新时间:2023-11-03 19:26:24 26 4
gpt4 key购买 nike

我试图将下拉列表的值传递给 session 变量,然后将该值转换为评论页面的文本标签。然后需要将该值传递给 sql 表(不是问题)。问题出在每次我尝试调用标签中下拉列表的值(或索引,我都尝试过)时,我得到一个空异常。这是我在第一页上的一个下拉菜单的代码,以及在下一页尝试将其从创建的 session 中绑定(bind)的尝试:第一页.aspx

<asp:DropDownList ID="ddlInnoc" runat="server">
<asp:ListItem Value="0">No</asp:ListItem>
<asp:ListItem Value="1">Yes</asp:ListItem>
</asp:DropDownList>

FirstPage.aspx.cs

Session["Jabs"] = ddlInnoc.SelectedIndex;

第二页.aspx

<asp:Label ID="lblJabs" runat="server"></asp:Label>

SecondPage.aspx.cs

lblJabs.Text = Session["Jabs"].ToString();

请有人告诉我,我只是愚蠢!我收到的异常如下:

Object reference not set to an instance of an object.

Description: An unhandled exception occurred during the execution of the current web
request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 11: {
Line 12: //Capture session values from previous page and send to relevant labels
Line 13: **lblGroup.Text = Session["NoInGroup"].ToString();**
Line 14: lblFirstName.Text = Session["FirstName"].ToString();
Line 15: lblMiddleName.Text = Session["MiddleName"].ToString();

有点奇怪的是,我可以在不同页面上成功获取不同 DropDownList 的 SelectedIndex。它让我撕掉我的头发!

最佳答案

确保在打开第二页之前进行回发。Session["Jabs"] = ddlInnoc.SelectedIndex; 应该在 selectedindexchanged 方法中并且 autpostback 应该在下拉列表中设置例如:

<asp:DropDownList ID="ddlInnoc" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlInnoc_SelectedIndexChanged">
<asp:ListItem Value="0">No</asp:ListItem>
<asp:ListItem Value="1">Yes</asp:ListItem>
</asp:DropDownList>

方法是这样的:

protected void ddlProject_SelectedIndexChanged(object sender, EventArgs e)
{
//if you want "0" or "1"
Session["Jabs"] = ddlInnoc.SelectedIndex;
//if you want "Yes" or "No"
//Session["Jabs"] = ddlInnoc.SelectedItem.Text;
//also if you want "0" or "1"
//Session["Jabs"] = ddlInnoc.SelectedValue;
}

在大多数情况下,您可能不需要 Selected Index,因为它只是下拉列表中项目的顺序

要确保 session 始终充满,您可以在 Page_Load 上设置它:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Session["Jabs"] = ddlInnoc.SelectedIndex;
}
}

此外:在使用 Session 时,您应该始终意识到 Session 可能会过期,因此您应该始终在使用前检查 NULL,例如:

SecondPage.aspx.cs

lblJabs.Text = (Session["Jabs"] == null ? "Default Value" : Session["Jabs"].ToString());

关于c# - 试图将选定的 DropDownList 传递给 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com