0

这是我的代码:

        protected void btnShow_Click(object sender, EventArgs e)
    {

      foreach (Control control in Panel1.Controls)
        {
            var textBox = control as TextBox;   
            if (textBox != null)
            {
                if (string.IsNullOrEmpty(textBox.Text))
                {

                textBox.Style["visibility"] = "hidden";
                }

               // textBox.Enabled = false;

                var id = from t in textBox.Text
                           where t != null
                           select textBox.ID;

                var text = from t in textBox.Text
                           where t != null
                           select t;

                foreach (var x in id)
                {
                    Model.crossword insert = new Model.crossword();
                    insert.TextBoxID = x;                      
                    daoCrossword.Insert(insert);
                }

                foreach (var a in text)
                {
                    Model.crossword insert = new Model.crossword();
                    insert.TextBoxValue = a.ToString();
                    daoCrossword.Insert(insert);
                }
                 daoCrossword.Save();                   
            }            
        }
    }

daoCrossword 是一个类文件,其中包含 CRUD 代码,我正在使用 EF 来执行此操作,我是新手,它给了我一个错误:System.NullReferenceException:对象引用未设置为对象的实例。

CRUD 类文件(部分):

  public void Insert(Model.crossword exe)
    {
        context.crosswords.AddObject(exe);
    }
public void Save()
    {
        context.SaveChanges();
    }
4

1 回答 1

0

我不知道你认为你在用这两个语句做什么,但它可能不是你认为的那样。

var id = from t in textBox.Text
         where t != null
         select textBox.ID;

var text = from t in textBox.Text
           where t != null
           select t;

那么你的 foreach 语句真的没有意义,因为你在集合中只会有一个项目。似乎您只是在尝试仅在文本框中有某些内容时才保存数据,为此您可能应该只做一个简单的 if 语句。

接下来,您在每个 foreach 中创建新的填字游戏对象,但您只在一个中分配一个 id,在另一个中分配一个文本。这也可能不是您想要的。很可能,您只想这样做:

if (!string.IsNullOrEmpty(textbox.Text))
{
    Model.crossword insert = new Model.crossword();
    insert.TextBoxID = textbox.ID;                      
    insert.TextBoxValue = textbox.Text;
    daoCrossword.Insert(insert);
}
于 2013-06-24T05:04:17.367 回答