将模型传递给控制器​​时为什么ObjectId为空?

时间:2013-05-27 17:41:02

标签: c# asp.net-mvc mongodb asp.net-mvc-4

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

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

2 个答案:

答案 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,并且可以处理您的任何查询。

相关问题