c# - 如何在不引用类本身的情况下调用 View 中的类内部的方法?

标签 c# asp.net-mvc razor

我目前有这段代码。

public static class User
{
    public static string GetUserName()
    {
        return Username;
    }
}

我想在 View 中调用 @GetUserName(),而不是 User.GetUserName();

是否可以在 View MVC 中调用类内部的方法而不引用类本身?

最佳答案

可以使用using static 指令来做到这一点,尽管我个人比较关心可读性:

@using static User
...
<p>The user name is: @GetUserName()</p>

如果 User 在不同的命名空间中,您需要这样:

@using static WhateverNamespace.User

再说一遍,从可读性的角度来看,我会非常谨慎地使用它……但它应该可以正常工作。

您还可以添加扩展方法,尽管这不是那么简洁。例如,我的测试应用程序使用 Razor 页面,所以我有一个 IRazorPage 扩展方法:

namespace YourNamespace
{
    public static class PageExtensions
    {
        public static string GetUserName(this IRazorPage view) => User.GetUserName();
    }
}

由于查找扩展方法的方式,您需要:

<p>The user name is: @this.GetUserName()</p>

this. 有点难看,但至少你不需要记住类名。

关于c# - 如何在不引用类本身的情况下调用 View 中的类内部的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50285735/

相关文章:

C# 程序集位置解析

asp.net-mvc - asp.net mvc - 需要为当前请求存储一些数据

javascript - 关于将大字符串发布到 Web 服务的建议

c# - 我如何知道从哪个主视图调用的局部 View ?

asp.net-mvc - 如何在 ASP.Net MVC View 中访问查询字符串?

c# - 查看模型 Asp.Net MVC

c# - 为什么 Assembly 和 Activator 对于 CreateInstance 的行为不同

c# - 在 MongoDB C# 驱动程序 2.2.2 中找不到 FindOne 方法

asp.net - 在网站的 SQL Server 中存储文件(图片)的优缺点

c# - 在 ASP.NET Core Razor 应用程序中使用相同模型在数据库中创建多个表