我如何在Razor中定义一个方法?

我如何在Razor中定义一个方法?

单独留下什么时候(如果有的话)应该做的辩论, @function是你怎么做的。

@functions { // Add code here. } 

你是指内联助手?

 @helper SayHello(string name) { <div>Hello @name</div> } @SayHello("John") 

你也可以用这样的Func做到这一点

 @{ var getStyle = new Func<int, int, string>((width, margin) => string.Format("width: {0}px; margin: {1}px;", width, margin)); } <div style="@getStyle(50, 2)"></div> 

剃刀只是一个模板引擎。

你应该创build一个普通的课程。

如果你想在Razor页面中创build一个方法,把它们放在一个@functions块中 。

在剃刀内部定义一个函数是非常简单的。

 @functions { public static HtmlString OrderedList(IEnumerable<string> items) { } } 

所以你可以在任何地方调用这个函数。 喜欢

 @Functions.OrderedList(new[] { "Blue", "Red", "Green" }) 

但是,同样的工作也可以通过helper完成。 举个例子

 @helper OrderedList(IEnumerable<string> items){ <ol> @foreach(var item in items){ <li>@item</li> } </ol> } 

那么区别是什么呢?? 根据之前的post ,@helpers和@functions共享一个共同点 – 它们使得代码在网页中重复使用成为可能。 他们也有一个共同点 – 他们乍看起来是一样的,这可能会导致他们的angular色有点混乱。 但是,它们并不相同。 从本质上讲,助手是Razor Sytnax的一个可重用的片段,作为一种方法公开,旨在将HTML呈现给浏览器,而一个函数是静态工具方法,可以从Web Pages应用程序中的任何位置调用。 帮助器的返回types始终是HelperResult,而函数的返回types是您想要的。