我正在使用ASP.NET MVC2 RC并且我已经在区域/控制器/操作规范之上构建了安全性,基本上使用了一个表来告诉基础架构哪个角色有权执行哪个控制器操作。
我用来获取“区域”的代码就是这个
RouteData.Values["area"]
然后我在数据库中检查了一下。我的问题是,当我从MVC 1 RTM迁移到MVC2 RC时,区域进入DataTokens集合,如果被调用的控制器位于根区域,则以下代码返回null < / p>
RouteData.DataTokens["area"]
你知道是否有办法告诉MVC如果“area”不在DataTokens集合中,它应该有string.Empty?
我试图避免修改我的代码以检查是否为null。
谢谢!
答案 0 :(得分:1)
作为解决方法,您可以手动将RouteData.Values中的值添加到RouteData.DataTokens。但理想情况下,您需要解决根本原因。
以下是该问题的解决方法:
if (controllerContext.RouteData.Values.ContainsKey("area"))
{
ControllerContext.RouteData.DataTokens.Add("area", ControllerContext.RouteData.Values["area"]);
}
答案 1 :(得分:0)
为什么不简单地检查RouteData.DataTokens [“area”]是否为空(或为空)并假定它是默认区域?
修改强>
道歉,在回答之前,我没有阅读你问题的最后一行。修改代码有什么问题?