C#/ ASP.net:列表重新初始化莫名其妙

时间:2012-03-28 09:13:58

标签: c# asp.net entity-framework

我正在开始开发一个C#/ ASP.net网络应用程序,我在其中使用实体框架(Microsoft ORM)。

我的问题非常简单: 在我的default.aspx.cs中,我有这个:

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


namespace Projet___TestConnaissances
{
    public partial class _Default : System.Web.UI.Page
    {
        protected List<Theme> lt = new List<Theme>();
        protected List<int> li = new List<int>();
        protected Theme th = new Theme();
        protected String test = "teeeest";
        protected int v = 1;

        protected void Page_Load(object sender, EventArgs e)
        {
            DataSourceContainer bdd = new DataSourceContainer();
            var requete = from Theme in bdd.ThemeSet select Theme;
            List<Theme> lt = requete.ToList(); // gets a list of themes
            v = lt.Count(); // puts in v the number of themes in lt
            th = lt.First(); // variable containing a unique theme (first of lt)
            test = "Ceci est un test";
            li.Add(1);
            li.Add(2);
            li.Add(3);
        }
    }
}

在我的default.aspx中,我显示了这个:

<p>
<br />test : <%= test %>
<br />v :  <%= v %>
<br />th.libelle : <%= th.libelle %>
<br />lt.count : <%= lt.Count() %>
<br />li.count : <%= li.Count() %>
</p>

结果,我有:

test : Ceci est un test
v : 3
th.libelle : Test ajout libelle
lt.count : 0
li.count : 3

正如你所看到的,我的主题列表在显示之前被莫名其妙地重新初始化。 奇怪的是,我的List of int得到妥善保存,以及包含唯一主题的变量。

使用实体设计器创建的Theme类,也许这与int的列表有区别?

提前感谢那些帮助我弄清楚那里发生了什么的人。 再见!

2 个答案:

答案 0 :(得分:3)

您的Page_Load方法声明了名为lt变量。它没有为实例变量赋值,因为局部变量正在遮蔽实例变量。所以这个:

List<Theme> lt = requete.ToList();

应该是这样的:

lt = requete.ToList();

我还建议使用更有意义的变量名称:)

答案 1 :(得分:0)

您正在重新定义page_load;

中方法范围中的变量
List<Theme> lt = requete.ToList(); // gets a list of themes

改为使用;

lt = requete.ToList(); // gets a list of themes