使用Umbraco Forms编辑数据

时间:2015-08-31 19:56:35

标签: umbraco umbraco7 umbraco-contour

我想使用Umbraco Forms不仅可以插入数据,还可以编辑它。到目前为止,当我想编辑一个记录时,我通过查询字符串传递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.Record,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编辑现有数据?

1 个答案:

答案 0 :(得分:0)

我无法看到针对此错误的修复程序 - 似乎var url = "/Person/Edit/" + pid; $.ajax({ url: url, success: function(data){ $('#editor-container').modal('show'); $('#editor-content-container').html(data); }, cache: false }); 方法实际上尝试再次插入所有UpdateRecord个对象而不是更新现有值(或导致此密钥违规的现有字段值。

如果你真的需要解决这个问题 - 正如我所做的那样 - 那么有一件事可行(但让你的主键更加分散)就是删除然后重新插入表单数据:

UFRecordField

一个不整洁的解决方案,但看似有效。