【问题标题】:umbraco 7 sharing @functions between templatesumbraco 7 在模板之间共享@functions
【发布时间】:2016-05-04 16:19:24
【问题描述】:

我正在学习 Umbraco 7,想构建一个常用 Razor 函数库。

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

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

我曾尝试使用 ViewBag 和 ViewData,但在部分中更改它们不会返回到模板。

换句话说,我似乎可以将参数和页面属性传递给部分视图,但不能将任何东西传回调用模板?

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

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

或者有没有更好的方法我错过了。

总而言之,我想要做的(不修改控制器或 MVC 的任何部分——即使用 Umbraco 开箱即用)是集中存储通用函数,我可以调用模板来操作页面内容在将其发送到浏览器之前。

非常感谢您的建议/链接。

[编辑]

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

例如

myFunctions.cshtml 有功能 我的Fn(...

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

这是一个可靠的解决方案吗?

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

【问题讨论】:

  • 有什么理由避免创建帮助器类(或扩展 UmbracoHelper)并在您的视图中引用它?

标签: umbraco partial-views umbraco7


【解决方案1】:

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

【讨论】:

  • 嗨 - 我做了这个并且它有效。谢谢。我可以在 app_code cshtml 中访问 umbraco 文档吗? Umbraco.Content(id);不起作用 - 我可以访问 Umbraco 节点吗?
  • 是的。查找 UmbracoHelper :-)
  • 嗯..正在搜索这个,但有点模糊 - 获取更多信息的最佳资源在哪里?
  • 不客气 :-) 如果对您有帮助,请记住接受答案 ;-)
  • 我刚刚点击了绿色的大勾 - 接受答案了吗?
猜你喜欢
  • 2014-08-23
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
相关资源
最近更新 更多