RavenDb с ASP.NET MVC 3 - Как создать URL с идентификатором?

Это, наверное, очень простой ответ, но я новичок в RavenDb, поэтому я, очевидно, что-то пропустил.

У меня есть базовый объект со стандартным соглашением для id:

public string Id { get; set; }

Когда я сохраняю его в хранилище документов, я вижу, что он получает значение типа:

сообщений/123

Что хорошо, но... как я могу создать такой URL-адрес:

www.mysite.com/edit/123

Если я это сделаю:

@Html.ActionLink("Edit", "Posts", new { id = @Model.Id })

Он будет генерировать следующий URL-адрес:

www.mysite.com/edit/posts/123

Это не то, что я хочу.

Неужели мне не нужно делать строковые манипуляции? Как люди подходят к этому?

Ответ 1

RPM1984, Есть несколько способов, которыми вы можете справиться с этим.

1) Вы можете изменить свою маршрутизацию, чтобы справиться с этим:

routes.MapRoute(
    "Default",                                                // Route name
    "{controller}/{action}/{*id}",                            // URL with parameters
    new { controller = "Home", action = "Index", id = "" });  // Parameter defaults

Это позволит MVC принимать параметры с косой чертой в них

2) Вы можете изменить стратегию генерации идентификатора по умолчанию:

 documentStore.Conventions.IdentityPartsSeparator = "-";

Это приведет к созданию идентификаторов с помощью:

сообщений-1 сообщений-2 и т.д.

См. также здесь:

http://weblogs.asp.net/shijuvarghese/archive/2010/06/04/how-to-work-ravendb-id-with-asp-net-mvc-routes.aspx

Ответ 2

Вы можете просто использовать...

int Id;

.. вместо...

string Id;

в классах сущностей:)

Ответ 3

На самом деле вам нужно извлечь целочисленное значение из идентификатора строки на основе документов. Это связано с тем, что ворон может обрабатывать любые идентификаторы, не обязательно генерируемые HILO целыми числами (это значение по умолчанию, если вы не указываете id по своему усмотрению).

Взгляните на образец RaccoonBlog. Внутри есть вспомогательный класс "RavenIdResolver", из которого очень легко получить числовой идентификатор из идентификатора документов.