我有一个用VB.Net编写的模块,它有几个只读属性。它看起来像这样:
Module Name1
Public ReadOnly Property ClientID As String
Get
Return "[some data here]"
End Get
End Property
Public ReadOnly Property ClientKey As String
Get
Return "[some data here]"
End Get
End Property
End Module
这里没有什么特别的东西。我想做的是在MVC 5 Razor页面中使用这个模块,如下所示:
<span>@Name1.ClientID - @Name1.ClientKey</span>
再说一遍,没什么新奇的。但是运行代码会产生以下错误:
Name1在此上下文中不可访问,因为它是"Friend"。
默认情况下,模块具有友元访问权限,这将阻止在当前程序集之外访问它们。这就是我想要的。但当从Razor页面调用时,它不起作用。我已经检查以确保名称空间是导入的,等等,但没有通过。(将模块的访问权限更改为public可以使事情正常运行,但我不希望将其公开。(
我做错了什么?
我在这里找到了解决问题的方法:ASP.NET MVC:如何设置全局ViewBag属性并使其在每个View 中可用
通过创建自定义ActionFilter,我可以设置ViewBag属性,并将它们的值设置为模块中的属性。然后我将该过滤器添加到GlobalFilters集合中。从那里,我可以很容易地访问Razor页面中的ViewBag属性。