2

我有一个使用模型绑定的 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 方法,因为我觉得它不是业务逻辑,而是前端类型的逻辑,可以根据完成的插入向用户提供反馈。

我的问题是 OnItemsInserted 方法中的 AffectedRows 属性始终为 -1,无论插入的结果如何。所以我永远无法根据这个 MSDN 示例验证插入是否成功:http: //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.formview.iteminserted.aspx

使用 ASP.Net 4.5 Web Forms 模型绑定的新模型绑定技术时,AffectedRows 属性是否错误或未填充到 FormViewInsertedEventArgs 集合中?还是我做错了什么?

4

1 回答 1

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 有效并且您已经到达 OnInserted 事件,使用 EF 5 + 模型绑定,您的记录已成功插入。

我们肯定希望在 MSDN 上看到更详细的示例以及有关 ASP Webforms 中的模型绑定的文档,因为当前的系列教程至少可以说是非常初级的。

于 2013-11-21T08:21:39.613 回答