2011-09-09 28 views
11

Esta es probablemente una respuesta muy simple, pero soy nuevo en RavenDb, así que obviamente me falta algo.RavenDb con ASP.NET MVC 3 - ¿Cómo generar URL con ID?

Tengo un objeto básico con la convención predeterminada para id:

public string Id { get; set; } 

al guardar en el almacén de documentos, veo que se pone un valor de como:

mensajes/123

lo cual está bien, pero ... ¿Cómo se genera una URL como esta:

www.mysite.com/edit/123

si hago esto:

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

Se generará la URL followiung:

www.mysite.com/edit/posts/123

Que no es lo que quiero.

Seguramente no tengo que hacer la manipulación de cadenas? ¿Cómo se acerca la gente a esto?

Respuesta

16

RPM1984, Existen varias formas de solucionarlo.

1) Puede modificar el enrutamiento de manejar esto:

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

Esto permitirá MVC para aceptar parámetros con barras en ellos

2) Se puede modificar la estrategia de generación de Identificación del defecto:

documentStore.Conventions.IdentityPartsSeparator = "-"; 

Esto generará ids con:

mensajes-1 mensajes-2 etc

Ver también aquí:

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

+0

Gracias Ayende - Voy a ir con la opción 2. Por cierto, me perdí su seminario Cuervo ayer por la noche, ya que decía "ID no válida, por favor intente de nuevo". :(¿Hay algún plan para publicar el audio/video para el seminario web en algún lugar? – RPM1984

+0

Gracias por su respuesta –

1

En realidad, tiene que extraer el valor entero de la id. Basada en cadenas de documentos. Esto se debe a que el cuervo realmente puede manejar cualquier tipo de Id, no necesariamente un entero generado por HILO (esto es predeterminado si no especifica un id por su cuenta).

Eche un vistazo a la muestra de RaccoonBlog. Hay una clase de ayuda "RavenIdResolver" en el interior que hace que sea muy fácil sacar el id. Numérico de la id de documentos.

3

Usted puede simplemente utilizar ...

int Id; 

..instead de ...

string Id; 

en sus clases de entidad :)

+0

No, no puede. No sin cambiar la configuración de Hilo. – RPM1984

+0

¿De verdad? Déjeme verificarlo – Korayem

+0

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

Cuestiones relacionadas