我需要创建一个函数,只需要在一个cshtml文件内。你可以把我的情况想象成ASP。NET页面方法,它们是在页面中实现的最小web服务,因为它们的作用域是一个页面。我知道HTML助手(扩展方法),但我的函数只需要在一个cshtml文件。我不知道如何在视图中创建函数签名。 注:我使用Razor模板引擎。
看看声明式剃刀助手
你可以使用@helper Razor指令:
@helper WelcomeMessage(string username) { <p>Welcome, @username.</p> }
然后像这样调用它:
@WelcomeMessage("John Smith")
如果你的方法不需要返回html,必须做一些其他的事情,那么你可以在Razor中使用lambda而不是helper方法
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; Func<int,int,int> Sum = (a, b) => a + b; } <h2>Index</h2> @Sum(3,4)
为什么不直接在CSHTML文件中声明这个函数呢?
@functions{ public string GetSomeString(){ return string.Empty; } } <h2>index</h2> @GetSomeString()
如果你想访问页面的全局变量,你可以这样做:
@{ ViewData["Title"] = "Home Page"; var LoadingButtons = Model.ToDictionary(person => person, person => false); string GetLoadingState (string person) => LoadingButtons[person] ? "is-loading" : string.Empty; }
在ASP。NET Core Razor Pages,你可以在函数中结合c#和HTML:
@model PagerModel @{ } @functions { void PagerNumber(int pageNumber, int currentPage) { if (pageNumber == currentPage) { <span class="page-number-current">@pageNumber</span> } else { <a class="page-number-other" href="/table/@pageNumber">@pageNumber</a> } } } <p>@PagerNumber(1,2) @PagerNumber(2,2) @PagerNumber(3,2)</p>