Как передать ObjectId из MongoDB в MVC.net

Я запускаю новый проект с монго, NoRM и .NET MVC.

Прежде чем я использовал FluentNHibernate, таким образом, мои идентификаторы были целым числом, теперь моими идентификаторами является ObjectId. Таким образом, когда у меня есть ссылка Редактирования, мой URL похож на это:

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

И это не связывает автоматически с моим контроллером как ObjectId

У Вас есть какие-либо предложения/лучшие практики для работы с этим? Я должен кодировать/декодировать идентификатор каждый раз?

Спасибо!

9
задан VinnyG 29 June 2010 в 17:36
поделиться

3 ответа

Использую следующее

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()); 
    }

чуть не забыл, сделайте URL из ObjectId.ToString()

14
ответ дан 4 December 2019 в 07:34
поделиться

Я не знаком с типом ObjectId , но вы могли бы написать привязку пользовательской модели , которая позаботится о преобразовании ограничения маршрута id в экземпляр из ObjectId .

0
ответ дан 4 December 2019 в 07:34
поделиться

Знаете ли вы, что можно использовать атрибут [MongoIdentifier], чтобы любое свойство действовало как уникальный ключ?

Я решил эту проблему, позаимствовав методику из WordPress путем представления каждой сущности свойством "url slug" и украшения этого свойства с помощью [MongoIdentifier].

Итак, если бы у меня был человек по имени Джонни Уокер, я бы создал фрагмент «Джонни-Уокер». Вам просто нужно убедиться, что эти URL-адреса остаются уникальными, и вы можете поддерживать чистые URL-адреса без уродливых идентификаторов объектов.

0
ответ дан 4 December 2019 в 07:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: