views:

59

answers:

2

I'm playing around with Raven DB and MVC 2. By default, the id in Raven will be e.g. "suggestions/1234" for an entity called Suggestion.

This causes problems with routing when I write like this:

<%: Url.Action("Delete", "Suggestion", new { id = suggestion.Id }) %>

The url will be /Suggestion/Delete/suggestions/14337 which won't work.

Can this be solved in the routing, or do I have to change the format of the id in Raven? And how do I do that?

+2  A: 

Change your route from {controller}/{action}/{id} to {controller}/{action}/{*id}. This is called a "catch-all" route; more details on MSDN.

Alternatively, you could pass the id as a query parameter.

Stephen Cleary
Good idea but only works on the last parameter
Malcolm Frexner
A: 

You will not be able to encode the forward slash by default.

Change the id to suggestions_1234 or try to use this setting:

<uri> 
    <schemeSettings>
        <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes" />
    </schemeSettings>
</uri>

I did not check if the config setting works yet. And I can't do it right now because the soccer starts in 5min.

http://stackoverflow.com/questions/591694/url-encoded-slash-in-url

Malcolm Frexner