umbraco 7 在模板之间共享@functions
umbraco 7 sharing @functions between templates
我正在学习 Umbraco 7,想构建一个常用 Razor 函数库。
我的想法是拥有一个核心局部视图,它将包含在大多数模板中,并且该局部视图将具有一个@functions{} 块。
然后我就可以从主模板中调用这些函数了。
但是,这似乎不起作用 - 大概是范围问题。
我试过使用 ViewBag 和 ViewData,但部分更改它们并没有 returned 到模板。
换句话说,似乎我可以将参数和页面属性 传递给 部分视图,但不能将任何内容传递回调用模板?
函数会多种多样,包括对页面内容的字符串操作(例如字符串替换),函数的想法将具有相关 属性 的参数,一些要替换的文本,然后是 return 将结果输出到模板中,所以其他想法包括
- 部分视图更新页面属性,然后可以由模板输出(这可能吗?)
- 将参数传递给部分(包括说明使用哪个函数)并让部分本身将函数的结果输出到浏览器。但是,由于我可能想在页面上的多个 属性 上使用这些功能,这意味着多次包含部分视图,每个 属性 一次。这会引起问题吗?
- 将函数放在主模板上并从子模板调用(不起作用)
或者有没有更好的方法我想念。
总而言之,我想做的(不修改控制器或 MVC 的任何部分——即开箱即用的 Umbraco)是集中存储通用函数,我可以调用模板来操作将页面内容发送到浏览器之前。
非常感谢收到建议/链接。
[编辑]
找到一个可能的解决方案:将函数添加到 App_Code 中的 cshtml 文件并通过文件名引用
例如
myFunctions.cshtml
有功能
我的Fn(...
所以在模板中
@myFunctions.myFn(...
这是一个可靠的解决方案吗?
缺点是任何更改都会立即影响整个站点,因此任何错误都是一个问题,而局部视图解决方案只会影响使用的模板。
您也可以在 App_Code 文件夹中创建一个 class 文件(例如 Helpers.cs 或其他)——放置在 class 中的任何功能都应该在整个过程中可用你的项目,自然也就只有一个地方维护代码了。
我正在学习 Umbraco 7,想构建一个常用 Razor 函数库。
我的想法是拥有一个核心局部视图,它将包含在大多数模板中,并且该局部视图将具有一个@functions{} 块。
然后我就可以从主模板中调用这些函数了。 但是,这似乎不起作用 - 大概是范围问题。
我试过使用 ViewBag 和 ViewData,但部分更改它们并没有 returned 到模板。
换句话说,似乎我可以将参数和页面属性 传递给 部分视图,但不能将任何内容传递回调用模板?
函数会多种多样,包括对页面内容的字符串操作(例如字符串替换),函数的想法将具有相关 属性 的参数,一些要替换的文本,然后是 return 将结果输出到模板中,所以其他想法包括
- 部分视图更新页面属性,然后可以由模板输出(这可能吗?)
- 将参数传递给部分(包括说明使用哪个函数)并让部分本身将函数的结果输出到浏览器。但是,由于我可能想在页面上的多个 属性 上使用这些功能,这意味着多次包含部分视图,每个 属性 一次。这会引起问题吗?
- 将函数放在主模板上并从子模板调用(不起作用)
或者有没有更好的方法我想念。
总而言之,我想做的(不修改控制器或 MVC 的任何部分——即开箱即用的 Umbraco)是集中存储通用函数,我可以调用模板来操作将页面内容发送到浏览器之前。
非常感谢收到建议/链接。
[编辑]
找到一个可能的解决方案:将函数添加到 App_Code 中的 cshtml 文件并通过文件名引用
例如
myFunctions.cshtml 有功能 我的Fn(...
所以在模板中 @myFunctions.myFn(...
这是一个可靠的解决方案吗?
缺点是任何更改都会立即影响整个站点,因此任何错误都是一个问题,而局部视图解决方案只会影响使用的模板。
您也可以在 App_Code 文件夹中创建一个 class 文件(例如 Helpers.cs 或其他)——放置在 class 中的任何功能都应该在整个过程中可用你的项目,自然也就只有一个地方维护代码了。