2012-07-21 64 views
2

的內部列表我有一個對象更新使用MongoDB的

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


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

我有一個功能,用戶可以只更新一個對象2的實例。所以我保存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。

感謝

回答

2

ObjectId類型是一個結構,而不是一類 - 所以它永遠不會是null。請改爲檢查ObjectId.Empty

但有一點要小心:我想你要在請求之間的某個隱藏字段中存儲Object2的id。如果是這種情況,請注意惡意用戶可以使用HTTP代理(如Fiddler)輕鬆更改ID,從而欺騙您相信Object2正在更新而不是添加。

根據您嘗試做的內容,我建議執行一些額外的檢查以更可靠地確定您是否應該插入或更新您的對象。

+0

謝謝!你是正確的,我使用隱藏字段來存儲Id.How否則我可以實現這個功能,如果我不使用隱藏字段? – user636525 2012-07-21 18:47:31

+1

@ user636525試試看看這個SO問題:http://stackoverflow.com/questions/10497126/how-to-pass-sensitive-data-from-view-to-controller。它包含許多有用的提示。 – 2012-07-21 18:56:18

+0

我想知道其他人如何在ASP.Net MVC世界中傳遞id!我讀了史蒂夫桑德森的書,並且從書中的樣本中獲得了將id作爲隱藏字段的想法。 – user636525 2012-07-21 19:06:34