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