这是我的代码:
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();
}
答案 0 :(得分: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);
}