首先,我是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);
}
}
答案 0 :(得分:2)
是的,这可以实现。我尝试使用Visual Studio 2015中的默认MVC项目。
About
视图的内容:
@{
ViewBag.Title = "About";
}
@functions
{
public static string DoStuff()
{
return "Content from About view.";
}
}
Index
视图的内容:
@{
ViewBag.Title = "Home Page";
}
@_Page_Views_Home_About_cshtml.DoStuff()
... (other stuff)
在Index
视图中,_Page_Views_Home_About_cshtml
下方有一条红色波浪形线显示:
当前上下文中不存在名称_Page_Views_Home_About_cshtml
尽管出现错误消息,但应用程序构建成功,我可以在导航到About
时看到来自/Home/Index
视图的消息。