我有一个使用模型绑定的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窗体模型绑定的新模型绑定技术时,Affect属性属性是否有缺陷或未填充在FormViewInsertedEventArgs集合中?或者我做错了什么?
答案 0 :(得分:1)
我的解决方案是上面提到的任何模型错误和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有效且您已使用EF 5 +模型绑定到达OnInserted事件,您的记录已成功插入。
我们肯定希望在MSDN上看到更详细的例子,并在ASP Webforms中看到关于模型绑定的文档,因为目前的一系列教程至少可以说是非常难以理解的。