【发布时间】:2016-08-01 11:21:08
【问题描述】:
首先,我是 MVC 的初学者。
我有一个名为 FinanceController 的控制器。我有两个视图,名为 StoreEvaluationForm 和 SendStoreEvaluationToPdf 这个控件。我想从第二个视图调用第一个视图的public static 函数,该函数在@functions 中定义。
我猜视图在 mvc 中有隐藏类。因为我意识到当我将鼠标悬停在第一个视图的函数上时,VS 会显示其名为 _Page_Views_Finance_StoreEvaluationForm_cshtml 的类和名为 ASP 的命名空间。但是我找不到任何方法来访问另一个视图的功能。在第二个视图中,ASP 命名空间只有其名为 _Page_Views_Finance_SendStoreEvaluationToPdf_cshtml 的类。
需要明确的是,视图中的函数是 C# 函数而不是 javascript 函数。它的定义是:
@functions
{
public static string NumberFormatter(double? number, bool percent = false)
{
return number == null ? null : string.Format("{0}{1}", number.Value.ToString("N2"), percent ? "%" : null);
}
}
【问题讨论】:
-
将共享函数移动到辅助类可能是一个更好的主意。你有什么理由不能这样做吗?
-
没有理由。我也可以将它移动到控制器类。但我只想知道。有没有办法从同一控制器中的另一个视图访问视图的功能。
-
使用 MVC,视图中应该没有函数。要共享代码或视图的一部分,请创建局部视图。如果是 JavaScript,则将其放在脚本文件中并在两个地方引用它。
-
它不是一个javascript函数。它是一个 C# 函数。我添加了它的定义。
-
是的,这是错误的做法,即使可以,也不要这样做。 MVC 是一种模式,坚持以正确的方式使用该模式
标签: c# .net asp.net-mvc function razor