2

我有一个对象

public class Object1{
public List<Object2> {get;set;}
}


public class Object2{
public Name{get;set;}
public Address{get;set;}
}

我有一项功能,用户可以只更新 Object2 的一个实例。所以我保存 Object2 的代码看起来像

[HttpPost]
public ActionResult SaveObject2(Object2 obj2)
{
  if (obj2.Id == null){
       //Add Logic
       obj1.Obj2List.Add(obj2)  
    }
   else{
      // Update logic
   }
}

但是 obj2.Id 永远不会为 null。Id 是 ObjectId 类型。我如何检查逻辑以查看是否需要插入或更新?我正在使用官方 C# 驱动程序使用 asp.net MVC 3 和 Mongo DB。

谢谢

4

1 回答 1

2

ObjectId类型是一个结构,而不是一个类 - 所以它永远不会是null. 而是检查ObjectId.Empty

不过请注意:我想您将 id 存储Object2在请求之间的某个隐藏字段中。如果是这种情况,请注意恶意用户可以通过使用 HTTP 代理(例如 Fiddler)轻松更改 ID,从而诱使您相信Object2正在更新而不是添加。

根据您尝试执行的操作的上下文,我建议您执行一些额外的检查,以更可靠地确定您是否应该插入或更新您的对象。

于 2012-07-21T17:53:41.307 回答