使用Umbraco表单编辑数据



我想使用Umbraco Forms不仅可以插入数据,还可以编辑数据。到目前为止,当我想编辑一条记录时,我通过querystring传递表单guid和记录id,并在字段中填充正确的数据。到目前为止一切顺利。

然后我成功地连接到Umbraco.Forms.Data.Storage.RecordStorage.RecordInserting事件,如下所示

void RecordStorage_RecordInserting(object sender, Umbraco.Forms.Core.RecordEventArgs e)
    {
        var ms = (Umbraco.Forms.Data.Storage.RecordStorage)sender;
        if(this record exists){
         ms.UpdateRecord(e.Record, e.Form);
        }
    }

然而,当我尝试提交一个编辑过的记录时,ms.RecordUpdate(e。记录,e.Form)行运行我得到这个错误

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_UFRecordDataString_UFRecordFields_Key". The conflict occurred in database "UmbracoPlay", table "dbo.UFRecordFields", column 'Key'.
The statement has been terminated.

我不能删除旧的记录,然后插入一个新的记录,因为它会重新引发相同的事件,每次我调用ms.InsertRecord

我错过了什么?如何使用Umbraco Forms编辑现有数据?

我看不到这个bug的修复-看起来好像UpdateRecord方法实际上试图第二次插入所有UFRecordField对象,而不是更新现有值(或现有字段值),导致这个键冲突。

如果你真的需要解决这个问题——就像我做的那样——那么一个有效的方法(但会让你的主键更加碎片化)就是简单地删除然后重新插入表单数据:

    var ms = (Umbraco.Forms.Data.Storage.RecordStorage)sender;
    if(this record exists){
       ms.DeleteRecord(e.Record, e.Form);
       ms.InsertRecord(e.Record, e.Form);
    }

相关内容

  • 没有找到相关文章

最新更新