asp.net-mvc - 在 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 MVC: How to set global ViewBag properties and have them available in each View
通过创建自定义 ActionFilter,我能够设置 ViewBag 属性并将它们的值设置为我模块中的属性。然后我将该过滤器添加到 GlobalFilters 集合中。从那里,我可以在 Razor 页面中轻松访问 ViewBag 属性。
推荐阅读
- firebase - Firebase 警告:身份验证为匿名的用户的权限被拒绝
- smtp - 解码 Nodemailer SMTP 响应
- ansible - Ansible 的变量似乎在 set_fact 中消失了
- mysql - MYSQL GROUP BY 和 WHERE 索引,带有时间戳列
- python - 连接重复的大数据帧:MemoryError
- node.js - NodeJS SQL Server - 如何使用将返回一个承诺的数组输入参数进行查询
- javascript - 如何组合线性数组的元素?
- angular - 无法迭代 Angular 6 中的本地对象数组?
- python - 为什么 \x00 没有被 repr 转换为 \0
- jquery - 使用 jQuery ajax 从客户端调用时服务器代码未触发