1

我刚刚开始使用 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,其余属性只是零)

我不知道该怎么办...请帮忙。

4

2 回答 2

3

发生这种情况是因为 mvc 不知道如何从字符串创建 ObjectId。您可以创建自己的模型绑定器,如本文http://www.joe-stevens.com/2011/06/12/model-binding-mongodb-objectid-with-asp-net-mvc/

于 2013-05-27T18:16:06.707 回答
1

对于 ASP.Net(包括核心)MVC,我发现最简单的方法是使用:new ObjectId(yourString)...这将为您提供来自字符串的 MongoDB ObjectId,并且应该适用于您的任何查询。

于 2017-03-14T06:38:59.937 回答