gpt4 book ai didi

c# - razor 文件中的 @functions 代码块有什么作用,我应该何时(如果有的话)使用它?

转载 作者:IT王子 更新时间:2023-10-29 03:56:25 27 4
gpt4 key购买 nike

在查看我从 Orchard CMS 库下载的主题时,我注意到 Layout.cshtml 文件的顶部有以下代码块:

@functions {
// To support the layout classifaction below. Implementing as a razor function because we can, could otherwise be a Func<string[], string, string> in the code block following.
string CalcuClassify(string[] zoneNames, string classNamePrefix)
{
var zoneCounter = 0;
var zoneNumsFilled = string.Join("", zoneNames.Select(zoneName => { ++zoneCounter; return Model[zoneName] != null ? zoneCounter.ToString() : ""; }).ToArray());
return HasText(zoneNumsFilled) ? classNamePrefix + zoneNumsFilled : "";
}
}

我知道声明函数的作用(计算填充哪些区域以返回每列的宽度),我的问题是 - @function block 的正确用法是什么,我应该什么时候使用它?

最佳答案

@functions block 允许您直接在 View 中定义实用函数,而不是将它们作为扩展添加到 @Html 帮助器或让 Controller 知道显示属性.当你能满足这些条件时,你会想使用它:

  1. 该功能与 View 紧密相关,在其他地方通常用处不大(例如“我的列有多宽”)。
  2. 该功能不仅仅是一个简单的 if 语句,和/或在您的 View 中的多个位置使用。
  3. 函数确定其逻辑所需的一切都已存在于 View 的 Model 中。

如果第一个失败,请将其添加为 @Html 助手。

如果你失败了第二个,就内联它。

如果第三个失败,您应该在 Controller 中进行计算并将结果作为模型的一部分传递。

关于c# - razor 文件中的 @functions 代码块有什么作用,我应该何时(如果有的话)使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975290/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com