首页 > 解决方案 > 在 MVC 5 Razor 页面中使用 VB.Net 模块

问题描述

我有一个用 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 在此上下文中不可访问,因为它是“朋友”。

默认情况下,模块具有好友访问权限,这会阻止它们在当前程序集之外被访问。这就是我要的。但是从 Razor 页面调用时它不起作用。我已经检查以确保命名空间已导入,但没有成功。(更改模块对公共的访问可以使事情正常进行,但我不希望将其公开。)

我究竟做错了什么?

标签: asp.net-mvcvb.netrazorfriendprotected

解决方案


我在这里找到了解决问题的方法:ASP.NET MVC: How to set global ViewBag properties and have them available in each View

通过创建自定义 ActionFilter,我能够设置 ViewBag 属性并将它们的值设置为我模块中的属性。然后我将该过滤器添加到 GlobalFilters 集合中。从那里,我可以在 Razor 页面中轻松访问 ViewBag 属性。


推荐阅读