我有一个使用模型绑定(bind)的 ASP.NET 4.5 Web 表单应用程序。我已经按照本教程创建了一个业务逻辑层:http://www.asp.net/web-forms/tutorials/data-access/model-binding/adding-business-logic-layer
因此我的 FormView 的 InsertMethod 位于适当的 BLL 类中。 BLL 类在我的代码隐藏的 OnCallingDataMethods 方法中按照上面的示例定义。 然而,OnItemInserted 方法,我已经直接在我的页面的代码隐藏类中定义,因为我觉得它不是每个人所说的业务逻辑,而是前端类型逻辑,用于根据已完成的插入向用户提供反馈。
我的问题是无论 Insert 的结果如何,OnItemsInserted 方法中的 AffectedRows 属性始终为 -1。所以我永远无法根据这个 MSDN 示例验证插入是否成功:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.iteminserted.aspx
当使用 ASP.Net 4.5 Web Forms 模型绑定(bind)的新模型绑定(bind)技术时,AffectedRows 属性是否错误或未填充到 FormViewInsertedEventArgs 集合中?还是我做错了什么?
最佳答案
我的解决方案是结合上面提到的业务层检查任何模型错误和 DBUpdateException,然后在 FormView 的 ItemInserted 事件中:
protected void personForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
if (this.ModelState.IsValid)
{
labResponse.Text = "New record added. Woohoo!";
}
else
{
labResponse.Text = "";
}
personForm.DefaultMode = FormViewMode.Insert;
}
这似乎适用于我的应用程序并且可以满足我的需求。从我的测试来看,如果存在模型错误,它永远不会到达此事件,因此可以安全地假设如果 modelState 有效并且您已经到达 OnInserted 事件,使用 EF 5 + 模型绑定(bind),您的记录已成功插入。
我们肯定希望在 MSDN 上看到更多详尽的示例,并在 ASP Webforms 中看到有关模型绑定(bind)的文档,因为至少可以说当前系列教程非常初级。
关于c# - AffectedRows 在 FormView 的 ItemInserted 中总是 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876451/