c#/Razor:如何从 .cshtml 页面引用用户定义的函数?

Posted

技术标签:

【中文标题】c#/Razor:如何从 .cshtml 页面引用用户定义的函数?【英文标题】:c#/Razor: How do I reference a user defined function from a .cshtml page? 【发布时间】:2018-03-23 13:46:22 【问题描述】:

我有一个包含所有用户定义函数的 Functions.cshtml 文件:

@functions 
.
   public static string doSomething(string aString, string anotherString) 
   ...
   
.

在另一个 myPage.cshtml 页面中,我引用了 doSomething:Functions.doSomething("dummy", "AnotherString");

当我在 VS 2015 中运行它时,会引用并执行该方法。但是,当我将我的应用程序部署到我的网站并尝试执行 myPage.cshtml 时,我收到了错误:

编译器错误消息:CS0117:“ASP.Functions”不包含 'doSomething' 的定义。

如何让网页像在 VS 2015 IDE 中运行一样运行?

【问题讨论】:

【参考方案1】:

将所有函数保存在一个 cshtml 文件中并不是最佳做法。如果在您的 App_Code 文件夹中添加具有所有这些功能的标准 C# 类,那么您将能够访问它们而无需导入。例如,如果 doSomething 是静态的,并且该类称为 Functions,那么您可以这样称呼它:

@Functions.doSomething("dummy", "AnotherString");

为了回答实际问题,如果其他cshtml页面不在App_Code中,我相信你不能调用它们。

【讨论】:

以上是关于c#/Razor:如何从 .cshtml 页面引用用户定义的函数?的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET Core Razor 页面中更改 cshtml 文件的名称

从 Blazor 组件 (.razor) 重定向到 Razor 页面 (.cshtml) [服务器端]

如果 .cshtml 文件中存在 razor/C# 错误,如何在 VS 2013 中使构建失败? [复制]

Razor 页面:从 _Layout.cshtml 设置 cookie

如何在 asp.net core .NET6(Razor 页面)中的单个 cshtml 中显示来自多个表/模型的数据

如何从从 NuGet 包获得的 RCL 导入 Razor 页面?