C# 访问视图';从另一个角度看s函数
首先,我是MVC的初学者 我有一个名为C# 访问视图';从另一个角度看s函数,c#,.net,asp.net-mvc,function,razor,C#,.net,Asp.net Mvc,Function,Razor,首先,我是MVC的初学者 我有一个名为FinanceController的控制器。我有两个视图,分别是该控件的StoreEvaluationForm和sendstoreeevaluationtopdf。我想从第二个视图调用第一个视图的公共静态函数,该函数在@functions中定义 我猜视图在mvc中隐藏了类。因为我意识到,当我将鼠标移到first view的函数上时,VS显示其名为\u Page\u Views\u Finance\u StoreEvaluationForm\u cshtml的
FinanceController
的控制器。我有两个视图,分别是该控件的StoreEvaluationForm
和sendstoreeevaluationtopdf
。我想从第二个视图调用第一个视图的公共静态
函数,该函数在@functions
中定义
我猜视图在mvc中隐藏了类。因为我意识到,当我将鼠标移到first view的函数上时,VS显示其名为\u Page\u Views\u Finance\u StoreEvaluationForm\u cshtml
的类及其名为ASP的命名空间。但是,我找不到任何方法来访问另一个视图的函数。在第二个视图中,ASP名称空间只有一个名为\u Page\u Views\u Finance\u SendStoreEvaluationToPdf\u 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);
}
}
是的,这是可以实现的。我在VisualStudio2015中使用默认的MVC项目进行了尝试 关于
的内容查看:
@{
ViewBag.Title = "About";
}
@functions
{
public static string DoStuff()
{
return "Content from About view.";
}
}
@{
ViewBag.Title = "Home Page";
}
@_Page_Views_Home_About_cshtml.DoStuff()
... (other stuff)
索引的内容查看:
@{
ViewBag.Title = "About";
}
@functions
{
public static string DoStuff()
{
return "Content from About view.";
}
}
@{
ViewBag.Title = "Home Page";
}
@_Page_Views_Home_About_cshtml.DoStuff()
... (other stuff)
在索引
视图中,在\u Page\u Views\u Home\u下方有一条红色的曲线,显示关于\u cshtml
的内容:
当前上下文中不存在名称\u页面\u视图\u主页\u关于\u cshtml
尽管出现了错误消息,应用程序还是成功构建,当导航到/Home/Index
时,我可以从About
视图中看到消息
将共享函数移动到helper类可能是一个更好的主意。你为什么不能那样做?没有理由。我还可以将其移动到控制器类。但我只是想知道。是否有一种方法可以从同一控制器中的另一个视图访问视图的功能。使用MVC时,视图中不应有任何功能。要共享代码或视图的一部分,请创建局部视图。如果是JavaScript,则将其放在脚本文件中,并在两个位置引用它。它不是JavaScript函数。这是一个C#函数。我添加了它的定义。是的,这是错误的方法,即使你可以,也不要。MVC是一种模式,请坚持以正确的方式使用该模式