从Razor视图访问Asp.net MVC3内部类

4

这不是一个重复的问题。我已经在SO上搜索过了,但我需要另一种方法。

今天是否有一种方法可以从Razor View中访问内部类,我知道该程序集必须可见且是可见的。

"internal"类中未声明任何属性或方法默认情况下不能从视图中访问。我需要一种覆盖此行为的方法。

谢谢。


你为什么想这样做?你是想访问一个方法/属性吗? - Shyju
2
这是无关紧要的。默认情况下,"internal"类中未声明的属性和方法无法从视图中访问。我需要一种方法来覆盖这个限制。谢谢。 - User907863
我知道需要将程序集设置为可见,您是指 InternalsVisibleTo 属性吗?请参考 http://msdn.microsoft.com/zh-cn/library/system.runtime.compilerservices.internalsvisibletoattribute.aspx。 - VJAI
1
我有同样的问题。我有一个Constants类,其中存储了所有全局可访问的常量,并且需要在Razor视图中引用它,但我不想使Constants类对其他程序集可见。有人解决了这个问题吗? - JD Stuart
1个回答

1
在大多数情况下,您可以将类从 internal 更改为 public。当这种情况不可取时,您可以使用 InternalsVisibleTo
对于由资源(.resx)文件自动生成的 .Designer.cs 文件,您可以通过在“设计器”视图中打开 resx 文件并更改“访问修饰符”为“public”来进行更改。

如果其他方法都失败了,您应该能够使用反射来获取所需内容。有关详细信息,请参见此处的顶部答案。

祝你好运!


很不幸的是,InternalsVisibleTo 对 Razor 引擎没有帮助,因为它在运行时生成公共类来暴露模型。这意味着可访问级别将不同,并且无论是否使用 InternalsVisible,都会在 Razor 中生成编译错误。 - Almund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接