C# ListView不保存已编辑的记录
我使用ASP.net 4.5 ListView,使用数据实体填充控件 当我使用下面的C代码编辑记录时,它不会保存更改。代码编译时没有任何错误,如果我单步执行代码,它会提取我正在编辑的记录,但不会保存更改。代码如下:C# ListView不保存已编辑的记录,c#,asp.net,listview,C#,Asp.net,Listview,我使用ASP.net 4.5 ListView,使用数据实体填充控件 当我使用下面的C代码编辑记录时,它不会保存更改。代码编译时没有任何错误,如果我单步执行代码,它会提取我正在编辑的记录,但不会保存更改。代码如下: public void ListView1_UpdateItem(int LinkAnalysisID) { LinkAnalysis.LinkAnalysi item = null; using (LAEntities db = ne
public void ListView1_UpdateItem(int LinkAnalysisID)
{
LinkAnalysis.LinkAnalysi item = null;
using (LAEntities db = new LAEntities())
{
// Load the item here, e.g. item = MyDataLayer.Find(id);
item = db.LinkAnalysis.SingleOrDefault(uu => uu.LinkAnalysisId == LinkAnalysisID);
if (item == null)
{
// The item wasn't found
ModelState.AddModelError("", String.Format("Item with id {0} was not found", LinkAnalysisID));
return;
}
TryUpdateModel(item);
if (ModelState.IsValid)
{
// Save changes here, e.g. MyDataLayer.SaveChanges();
db.SaveChanges();
}
}
}
任何帮助都将不胜感激
经过进一步研究,我已经将代码编辑成如下所示
public void ListView1_UpdateItem(int LinkAnalysisID)
{
LinkAnalysis.LinkAnalysi item = null;
using (LAEntities db = new LAEntities())
{
// Load the item here, e.g. item = MyDataLayer.Find(id);
item = db.LinkAnalysis.Find(LinkAnalysisID);
//item = db.LinkAnalysis.SingleOrDefault(uu => uu.LinkAnalysisId == LinkAnalysisID);
if (item == null)
{
// The item wasn't found
ModelState.AddModelError("", String.Format("Item with id {0} was not found", LinkAnalysisID));
return;
}
TryUpdateModel(item);
if (ModelState.IsValid)
{
// Save changes here, e.g. MyDataLayer.SaveChanges();
db.SaveChanges();
}
}
}
我仍然会得到与代码运行时相同的结果,但更改不会保存到数据库中
TryUpdateModel(项目)代码>此方法是否实际添加了任何内容。。我看不到您正在执行的任何操作db.SomeEntity.Add
method在TryUpdateModel上设置断点。执行它并检查您的EntityState是否显示已更改。此外,检查它是否通过ModelState.IsValid。如果两种情况都没有发生,您将看不到更新。并且假设您在页面上更改了某些内容,那么它将发布一个更改。这是更新成功的第三个要求。感谢您的回复方法。假设该方法可以编辑记录。该方法执行,我可以查看数据,ModelState验证为true。对记录的更改不会写入数据库。有趣的情况我正在尝试在Listview中使用这段代码,如果我在Gridview中使用这段代码,同样的代码也可以很好地工作。Dacker也感谢您的评论。我已经设置了断点并循环通过ModelSate检查为有效的代码。