umbraco 7在模板之间共享@functions

时间:2016-05-04 07:17:09

标签: umbraco partial-views umbraco7

我正在学习Umbraco 7,并希望建立一个共同的Razor函数库。

我的想法是拥有一个核心部分视图,该视图将包含在大多数模板中,并且此部分视图将具有@functions {}块。

然后我就可以从主模板中调用这些函数了。 但是,这似乎并不起作用 - 大概这是一个范围问题。

我尝试过使用ViewBag和ViewData,但在部分中更改它们并没有返回到模板。

换句话说,似乎我可以将参数和页面属性传递给部分视图,但是无法将任何内容传递回调用模板?

函数将是各种各样的,包括对页面内容的字符串操作(例如字符串替换),该函数将具有相关属性的参数,要替换的一些文本,然后将结果返回到模板以进行输出,所以其他想法包括

  • 局部视图更新页面属性,然后可以通过模板输出(这可能吗?)
  • 将参数传递给partial(包括一个说明要使用的函数)并让部分本身将函数的结果输出到浏览器。但是,由于我可能希望在页面上的多个属性上使用这些函数,这意味着多次包含局部视图,每个属性一次。这会导致问题吗?
  • 将函数放在主模板上并从子模板调用(不起作用)

或者有一种更好的方法,我错过了。

总结一下,我正在尝试做什么(没有修改控制器或MVC的任何部分 - 即开箱即用的Umbraco),集中存储通用功能,我可以调用模板来操作页面内容在将其发送到浏览器之前。

感谢收到的建议/链接。

[编辑]

找到一个可能的解决方案:在App_Code中为cshtml文件添加函数并按文件名引用

例如

myFunctions.cshtml 有功能 myFn(...

所以在模板中 @ myFunctions.myFn(...

这是一个强有力的解决方案吗?

缺点是任何更改都会立即影响整个网站,因此任何错误都是一个问题,而部分视图解决方案只会影响使用的模板。

1 个答案:

答案 0 :(得分:1)

你也可以在App_Code文件夹中创建一个类文件(比如Helpers.cs或其他东西) - 在整个项目中,该类中的任何函数都应该可用,并且自然只有一个地方可以维护代码。

相关问题