从另一个视图访问视图的功能

时间:2016-08-01 11:21:09

标签: c# .net asp.net-mvc function razor

首先,我是MVC的初学者。

我有一个名为FinanceController的控制器。我有两个名为StoreEvaluationFormSendStoreEvaluationToPdf此视图的视图。我想从第二个视图调用第一个视图的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);
    }
}

1 个答案:

答案 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视图的消息。

View