Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法更新MongoDB中的文档_C#_Asp.net_Mongodb_Axios - Fatal编程技术网

C# 无法更新MongoDB中的文档

C# 无法更新MongoDB中的文档,c#,asp.net,mongodb,axios,C#,Asp.net,Mongodb,Axios,我不知道如何在.NETWebAPI中更新文档。我在网上读了很多教程,但仍然没有成功。其中之一是 方法将数据发送到api updateTemplate: function (_id) { axios({ method: 'put', url: 'http://localhost:57802/api/updateleavetemplate', par

我不知道如何在.NETWebAPI中更新文档。我在网上读了很多教程,但仍然没有成功。其中之一是

方法将数据发送到api

updateTemplate: function (_id) {
                axios({
                    method: 'put',
                    url: 'http://localhost:57802/api/updateleavetemplate',
                    params: { Id: _id },
                    data: {
                        id: this.chosen.Id,
                        max: this.chosen.max,
                        rules: this.chosen.rules
                    }
                }).then(function (response) { console.log(response); })
                    .catch(function (error) {
                        console.log(error);
                    });
            },
API控制器

[Route("api/updateleavetemplate/")]
[HttpPut]
public void UpdateLeave(String Id, LeavesTemplate UpdatedModel)
{
    _LeavesTemplateRepository.EditLeavesTemplate(Id, UpdatedModel);
}
从存储库中编辑方法

public void EditLeavesTemplate(String Id, LeavesTemplate leavestemplate)
{
    LeavesTemplate t = FindLeavesTemplateById(new ObjectId(Id));
    t.max = leavestemplate.max;
    t.rules = leavestemplate.rules;
    var filter = Builders<LeavesTemplate>.Filter.Eq(s => s.Id, leavestemplate.Id);
    var result = context.LeavesTemplates.ReplaceOneAsync(filter, t);

}
public void EditLeavesTemplate(字符串Id,LeavesTemplate LeavesTemplate)
{
LevesTemplate t=FindLevesTemplateById(新对象Id(Id));
t、 max=leavestemplate.max;
t、 rules=leavestemplate.rules;
var filter=Builders.filter.Eq(s=>s.Id,leavestemplate.Id);
var result=context.LeavesTemplates.ReplaceOneAsync(filter,t);
}

我只是用以下代码替换存储库中的方法:

public void EditLeavesTemplate(String Id, LeavesTemplate leavestemplate)
        {
            LeavesTemplate z = FindLeavesTemplateById(new ObjectId(Id));
            z.rules = leavestemplate.rules;
            z.max = leavestemplate.max;    
            z.Id = ObjectId.Parse(Id);
            ReplaceOneResult e = context.LeavesTemplates.ReplaceOne(Builders<LeavesTemplate>.Filter.Eq(r => r.Id, z.Id), z, new UpdateOptions() { IsUpsert = true });
            Console.WriteLine(e.IsAcknowledged);

        }
public void EditLeavesTemplate(字符串Id,LeavesTemplate LeavesTemplate)
{
LeavesTemplate z=FindLeavesTemplateById(新对象Id(Id));
z、 rules=leavestemplate.rules;
z、 max=leavestemplate.max;
z、 Id=ObjectId.Parse(Id);
ReplaceOneResult e=context.LeavesTemplates.ReplaceOne(Builders.Filter.Eq(r=>r.Id,z.Id),z,newupdateOptions(){IsUpsert=true});
Console.WriteLine(即已确认);
}

调试时是否在
EditLeavesTemplate()
中获取数据?@derloopkat我将存储库中的代码更改为
LeavesTemplate z=new LeavesTemplate();z、 rules=leavestemplate.rules;z、 max=leavestemplate.max;z、 Id=ObjectId.Parse(Id);ReplaceOneResult e=context.LeavesTemplates.ReplaceOne(Builders.Filter.Eq(r=>r.Id,z.Id),z,newupdateOptions(){IsUpsert=true});Console.WriteLine(即已确认)。现在,每隔一个字段就被替换为null。仅保存已定义的。将ReplaceOne更改为UpdateOne也无济于事。在此处编辑您的问题并更新代码,无需将其作为注释或答案发布。虽然此代码可能会回答问题,但通常认为添加对代码功能的解释是一种良好做法。这使得不熟悉这一领域的开发人员能够理解代码中正在发生的事情,并帮助他们学会如何在将来自己解决问题。
public void EditLeavesTemplate(String Id, LeavesTemplate leavestemplate)
        {
            LeavesTemplate z = FindLeavesTemplateById(new ObjectId(Id));
            z.rules = leavestemplate.rules;
            z.max = leavestemplate.max;    
            z.Id = ObjectId.Parse(Id);
            ReplaceOneResult e = context.LeavesTemplates.ReplaceOne(Builders<LeavesTemplate>.Filter.Eq(r => r.Id, z.Id), z, new UpdateOptions() { IsUpsert = true });
            Console.WriteLine(e.IsAcknowledged);

        }