我刚刚开始使用MongoDB而且我遇到了问题。 当我尝试将对象传递给包含Id(ObjectId)的控制器时,此Id为空
我的观看代码:
@using (Html.BeginForm()) {
<fieldset>
<legend>Product</legend>
@Html.HiddenFor(model => model.Id)
@Html.EditorFor(model => model.Name)
@Html.EditorFor(model => model.Price)
<input type="submit" value="Save" />
</fieldset>
}
动作:
[HttpPost]
public ActionResult Edit(Product product)
{
_db.Update(product);
return RedirectToAction("Index");
}
行动开始正确,我的意思是,产品中的所有属性都是正确的,但Id(mongo的ObjectId)只是空的(创建日期是1970年,其余属性只是零)
我不知道该怎么办...... 请帮忙。
答案 0 :(得分:2)
这是因为mvc不知道如何从字符串创建ObjectId。您可以像本文http://www.joe-stevens.com/2011/06/12/model-binding-mongodb-objectid-with-asp-net-mvc/
中那样创建自己的模型装订器答案 1 :(得分:1)
对于ASP.Net(包括Core)MVC,我发现最简单的方法是使用:new ObjectId(yourString)
...这将从字符串中为您提供MongoDB ObjectId,并且可以处理您的任何查询。