我有一个对象
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。
由于
答案 0 :(得分:2)
ObjectId
类型是一个结构,而不是一个类 - 所以它永远不会是null
。请检查ObjectId.Empty
。
但请注意:我认为您将Object2
的id存储在请求之间的某个隐藏字段中。如果是这种情况,请注意恶意用户可以使用HTTP代理(例如Fiddler)轻松更改ID,从而诱使您相信Object2
正在更新而不是添加。
根据您尝试执行的操作的上下文,我建议执行一些额外的检查,以更可靠地确定您是否应插入或更新对象。