umbraco 7 在模板之间共享@functions

标签 umbraco partial-views umbraco7

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

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

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

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

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

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

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

或者我缺少更好的方法。

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

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

[编辑]

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

例如

myFunctions.cshtml 有功能 myFn(...

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

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

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

最佳答案

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

关于umbraco 7 在模板之间共享@functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020914/

相关文章:

c# - MVC 分部 View 是否类似于 WebForms 控件?

html - 需要帮助前端用户使用 Merchello 电子商务产品搜索功能

umbraco - umbraco 4 中的文件夹

angularjs - 如何使用 angularjs 指令数据绑定(bind) mvc 部分 View

c# - 如何从代码向 Umbraco 中的文档类型添加属性?

asp.net-mvc - mvc 在登录尝试失败后生成验证码

c# - 如何在 Umbraco 7 中启用 umbracoNaviHide

css - 如何在不使用源按钮的情况下将类添加到 Umbraco 7 的 TinyMCE 中的表中?

c# - 如何将 WebApiConfig 添加到我的 UmbracoApiController?

c# - 在 umbraco 中为节点创建默认子节点