asp.net-mvc – RavenDB Ids和ASP.NET MVC3路由

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – RavenDB Ids和ASP.NET MVC3路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
只需建立一个快速,简单的网站与MVC 3 RC2和RavenDB来测试一些事情.

我已经能够做一些项目,但我很好奇Html.ActionLink()如何处理一个raven数据库ID.

我的例子:我有一个称为“原因”的文档(一些原因,主要是文本),它具有原因文本和链接列表.我可以通过我的存储库添加,删除和做任何其他的事情.

以下是我的剃须刀视图的一部分,其中列出了项目符号列表中的每个原因,并使用“编辑”链接作为第一个文本:

@foreach(var Reason in ViewBag.ReasonsList)
{
    <li>@Html.ActionLink("Edit","Reasons","Edit",new { id = Reason.Id },null) @Reason.ReasonText</li>
    <ul>
    @foreach (var reasonlink in Reason.ReasonLinks)
    { 
        <li><a href="@reasonlink.URL">@reasonlink.URL</a></li>
    }
    </ul>
}

问题

这个工作正常,除了编辑链接.虽然这里的值和代码似乎直接工作(即链接直接触发),但RavenDB将我的文档ID保存为“reason / 1”.

因此,当URL发生并通过ID时,生成的路由为“http:// localhost:4976 / Reasons / Edit / reason / 2”.所以,ID被正确附加,但是MVC将其解释为它自己的路由.

关于我如何能够解决这个问题的任何建议?我需要创建一个特殊的路线来处理它,还是有其他可以做的?

解决方法

我刚刚下载了最新版本的RavenDB,并尝试了这一点.
public class Entity {
    public int Id { get;set; }
    public string Text { get;set; }
}

当我将其保存到RavenDB中时,Raven中的ID为“entities / 1”,但是RavenDB客户端中的映射能够将Id从数据库中的内容成功解释为我想要的整数.

var entity = session.Load<Entity>(1);
Assert.IsTrue(entity.Id == 1);

您不需要扩展方法,这样您就不需要像上述那样更改任何路由,因为您将处理好的整数.字符串Ids几乎是一个交易破坏者,但令人惊讶的是,这是工作,所以RavenDB回到了狩猎.

>注意:我从观看罗伯·阿什顿讲话中想出这一点,并意识到他所有的文档类都具有整数作为Ids.

猜你在找的asp.Net相关文章