如何从MVC.net中的MongoDB传递ObjectId [英] How to pass ObjectId from MongoDB in MVC.net

查看:81
本文介绍了如何从MVC.net中的MongoDB传递ObjectId的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在与Mongo,NoRM和MVC .Net开始一个新项目.

I'm starting a new project with Mongo, NoRM and MVC .Net.

在我使用FluentNHibernate之前,我的ID是整数,现在我的ID是ObjectId.因此,当我具有编辑"链接时,我的URL如下所示:

Before I was using FluentNHibernate so my IDs were integer, now my IDs are ObjectId. So when I have an Edit link my URL looks like this :

WebSite/Admin/Edit/23,111,160,3,240,200,191,56,25,0,0,0

WebSite/Admin/Edit/23,111,160,3,240,200,191,56,25,0,0,0

并且它不会作为ObjectId自动绑定到我的控制器

And it does not bind automaticly to my controller as an ObjectId

您对此有什么建议/最佳实践吗?我是否需要每次都对ID进行编码/解码?

Do you have any suggestions/best practices to work with this? Do I need to encode/decode the ID everytime?

谢谢!

推荐答案

我使用以下

public class ObjectIdModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        string value = controllerContext.RouteData.Values[bindingContext.ModelName] as string;
        if (String.IsNullOrEmpty(value)) {
            return ObjectId.Empty;
        }
        return new ObjectId(value);
    }
}

protected void Application_Start()
    {
        ......

        ModelBinders.Binders.Add(typeof(ObjectId), new ObjectIdModelBinder()); 
    }

几乎忘记了,从ObjectId.ToString()

这篇关于如何从MVC.net中的MongoDB传递ObjectId的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆