【问题标题】:Unable to get the the right value using generic list无法使用通用列表获得正确的值
【发布时间】:2013-12-15 16:48:54
【问题描述】:

这里的通用列表有问题。我正在尝试创建一个站点,您可以在其中使用复选框列表选择项目,并接收您选择的内容。我和完成一样好,但我无法从“ImageSrc”字段中获得正确的值。当我在另一侧打印出来时,我在两个字段中都得到了“名称”值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

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


        if (!IsPostBack)
        {


            movies();
        }

        if (Session["Movies"] == null)
        {
            btnDeleteSession.Visible = false;
        }
        else
        {
            btnDeleteSession.Visible = true;
        }
    }

    protected void movies() {
        List<Movie> movieList= new List<Movie>();
            movieList.Add(new Movie() { Name = "Avengers", ImageSrc= "avengers.jpg" });
            movieList.Add(new Movie() { Name = "Pacific Rim", ImageSrc= "pacificRim.jpg" });
            movieList.Add(new Movie() { Name = "Star Trek", ImageSrc= "starTrek.jpg" });
            movieList.Add(new Movie() { Name = "Superman", ImageSrc= "superman.jpg" });
            movieList.Add(new Movie() { Name = "World War Z", ImageSrc= "worldwarz.jpg" });

            foreach (Movie movies in movieList)
            {
                CheckBoxList1.Items.Add(movies.Name);
            }
    }

    public List<Movie> movieList
    { 
        get 
        { 
            if (Session["Movie"] == null) 
            { 
                List<Movie> movieList= new List<Movie>();
                Session.Add("Movies", movieList); 
            } 
            return Session["Movies"] as List<Movie>; 
        } 
        set 
        { 
            Session["Movies"] = value; 
        } 
    }

    protected void btnSelectMovie_Click(object sender, EventArgs e)
    {

        if (CheckBoxList1.Items.Cast<ListItem>().Any(item => item.Selected))
        {
            Session["Movies"] = null;
            List<Movie> movies= movieList;
            foreach (ListItem item in CheckBoxList1.Items)
            {
                if (item.Selected)
                {
                    Movie newMovie = new Movie() { Name = item.Value, ImageSrc = item.Value };
                    movies.Add(newMovies);
                }
            }

            Response.Redirect("movieCeck.aspx");

        }
        else
        {
            StatusLiteral.Text = "Choose at least one movie";
        }


    }

    protected void btnDeleteSession_Click(object sender, EventArgs e)
    {
        Session["Movie"] = null;
        Response.Redirect("~/movieIndex.aspx");
    }
}

【问题讨论】:

    标签: c# asp.net visual-studio generic-list


    【解决方案1】:

    您似乎将 Name 和 ImageSrc 都设置为 item.Value。

    【讨论】:

    • 是的,可能,但我找不到将这两个值都放入页面下方的点击事件的方法。
    【解决方案2】:

    可能是因为这里打错了 if (Session["Movie"] == null)

    应该是 if (Session["Movies"] == null)

    【讨论】:

    • 感谢您的回复,但我在翻译成英文时打错了。所以它没有在我的 .cs-document 中输入错误
    • 这种错别字可以在cmets中显示。如果您不确定问题所在,请不要回答。只需发表评论。
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2014-06-05
    • 2014-12-23
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    相关资源
    最近更新 更多