2011-09-09 14 views
11

Jest to prawdopodobnie bardzo prosta odpowiedź, ale jestem nowy w RavenDb, więc oczywiście brakuje mi czegoś.RavenDb z ASP.NET MVC 3 - Jak wygenerować adres URL z identyfikatorem?

Mam podstawowy obiekt z konwencją domyślny ID:

public string Id { get; set; } 

Kiedy zapisać go do sklepu dokumentu, widzę robi wartości jak:

posty/123

Który jest w porządku, ale ... W jaki sposób generowania adresów URL tak:

www.mysite.com/edit/123

Jeśli mogę to zrobić:

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

będzie generować followiung URL:

www.mysite.com/edit/posts/123

Co nie jest tym, czego chcę.

Z pewnością nie mam zrobić łańcuchach? Jak ludzie się do tego zbliżają?

Odpowiedz

16

RPM1984, Istnieje kilka sposobów na rozwiązanie tego problemu.

1) Można modyfikować swój routing do obsługi to:

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

Pozwoli MVC przyjmować parametrów z ukośniki w nich

2) Można zmodyfikować strategię domyślny generacji id:

documentStore.Conventions.IdentityPartsSeparator = "-"; 

To będzie generować identyfikatory z:

posty-1 posty-2 itp

Zobacz również tutaj:

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

+0

Dzięki Ayende - pójdę z opcji 2. BTW, brakowało mi swoją webinar Raven ostatniej nocy, ponieważ powtarzał „Nieprawidłowy identyfikator, spróbuj ponownie”. :(Czy planujesz opublikować audio/video gdzieś na webinarium? – RPM1984

+0

Dziękuję za odpowiedź –

1

Właściwie należy wyodrębnić wartość całkowitą z identyfikatora opartego na ciągach dokumentów. Dzieje się tak dlatego, że kruk może obsłużyć dowolny rodzaj Id, niekoniecznie generowany przez HILO (jest to domyślne, jeśli nie określisz własnego identyfikatora).

Zobacz przykładową próbkę RaccoonBlog. Istnieje klasa pomocnicza "RavenIdResolver", która znacznie ułatwia uzyskanie identyfikatora liczbowego z id dokumentów.

3

można po prostu użyć ...

int Id; 

..instead z ...

string Id; 

w klasach jednostki :)

+0

Nie, nie możesz bez zmiany ustawień Hilo – RPM1984

+0

Naprawdę? Pozwól mi sprawdzić dwukrotnie – Korayem

+0

HYG http://stackoverflow.com/ a/9178299/80434 – Korayem

Powiązane problemy