带/的ID会导致路由问题

时间:2010-06-19 13:21:30

标签: c# asp.net-mvc routing ravendb

我正在玩Raven DB和MVC 2。 默认情况下,Raven中的id将是例如对于名为Suggestion的实体,“建议/ 1234”。

当我这样写时,这会导致路由问题:

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

网址将是/ Suggestion / Delete / suggestions / 14337,这将无效。

这可以在路由中解决,还是我必须在Raven中更改id的格式?我该怎么做?

2 个答案:

答案 0 :(得分:3)

将您的路线从{controller}/{action}/{id}更改为{controller}/{action}/{*id}。这被称为“全能”路线;更多详情on MSDN

或者,您可以将id作为查询参数传递。

答案 1 :(得分:0)

默认情况下,您无法对正斜杠进行编码。

将ID更改为suggestions_1234或尝试使用此设置:

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

我没有检查配置设置是否有效。我现在不能这样做,因为足球在5分钟后开始。

URL-encoded slash in URL