我们正在使用友好的名称 URL 路由方案。基本上使用主体身份和友好名称的组合,可以将其映射回内部身份(个人 ID)。所以这样的路线:
routes.MapRoute(string.Empty, "{friendlyname}/Products/{action}", new {controller = "Products", action = "List"});
将映射到这样的 URL:
Adam/Products/List
这一切都很好,并抽象出所需的命名人员的内部 ID。
问题是我们的视图由许多部分视图组成。当使用 @Html.Action 方法呈现时,它们最终需要 PersonID,但从 URL 中我们只有“友好名称”。
我已经考虑了一段时间,我想到了两个解决方案:
将“友好名称”传递给每个返回部分视图的控制器操作方法,并且该方法在内部必须对当前登录的身份和友好名称进行查找。这会将 PersonID 提供给我,然后我可以从那时起有效地查询。这个方法的唯一问题是,由于有多个部分视图,我将查询当前登录的身份和友好名称,以获取每个部分视图调用的无效名称,我觉得我应该只需要编写一次此代码。
以某种方式在视图中查询并获取 PersonID,以便可以将其传递给每个 @Html.Action 调用,因此部分视图控制器方法不必自己进行查找,从而节省了到数据库的往返行程以获取相同的共享信息。这样做的问题是,我不确定在视图中使用我们在应用程序的其余部分中使用的 DI 来做这个干净利落的方法。
任何关于方法的想法将不胜感激。
谢谢,
亚当