在查看我从 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 知道显示属性.当你能满足这些条件时,你会想使用它:
- 该功能与 View 紧密相关,在其他地方通常用处不大(例如“我的列有多宽”)。
- 该功能不仅仅是一个简单的
if
语句,和/或在您的 View 中的多个位置使用。 - 函数确定其逻辑所需的一切都已存在于 View 的
Model
中。
如果第一个失败,请将其添加为 @Html
助手。
如果你失败了第二个,就内联它。
如果第三个失败,您应该在 Controller 中进行计算并将结果作为模型的一部分传递。
关于c# - razor 文件中的 @functions 代码块有什么作用,我应该何时(如果有的话)使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975290/