如何在MVC视图中无需引用类本身调用类内方法?
在MVC视图中直接调用静态方法而无需引用类的方案
当然可以做到!想要在视图里直接用@GetUserName()这种简洁写法,不用每次都写User.GetUserName(),这里有两种实用的方法,根据你的需求选就行:
方法一:单个视图内快速启用
如果只是想在某一个视图里这么用,直接在视图的最顶部添加using static指令,指定你的User类所在的命名空间:
@using static YourProjectNamespace.User; // 替换成你实际的命名空间
添加之后,这个视图里就可以直接调用@GetUserName()了,完全不用带类名前缀。
方法二:全局配置所有视图生效
要是想让所有视图都能直接用这个方法,不用每个视图都加指令,就去修改视图专用的Web.config文件:
- 找到项目里的
Views/Web.config(注意不是项目根目录的那个Web.config) - 找到
<system.web.webPages.razor>节点下的<pages>-><namespaces> - 添加一行全局的静态命名空间引用:
<add namespace="static YourProjectNamespace.User" />
保存配置后,所有视图都能直接调用@GetUserName()了,非常方便。
注意事项
- 这个方法依赖C# 6及以上的语言特性,所以要确保你的项目使用的是C# 6或更高版本。如果是老项目,可以右键项目 -> 属性 -> 生成 -> 高级 -> 语言版本,选择对应的版本。
- 要确认
User类的访问修饰符是public,不然视图里会访问不到哦。
内容的提问来源于stack exchange,提问作者tested hanes
相关产品推荐
相关产品推荐

