遇到一个奇怪的问题,希望大家多多指教。我正在使用 Umbraco 4.11.10 并试图满足从一组报价中显示 1 个随机报价的要求。真正令人费解的是,这个确切的代码在使用相同版本的 Umbraco 的不同站点上工作。
Quote 对象只有两个属性...quoteText 和quoteSignature。这是我的整个剃须刀脚本(目前失败)。
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
var item = @Model.NodeById(1113).Children.Random();
<div>
<blockquote>@item.quoteText<span>- @item.quoteSignature</span></blockquote>
</div>
}
如果我去掉 div 并阻止引用以及所有这些然后离开
var item = @Model.NodeById(1113).Children.Random();
它仍然失败。
如果我删除 Random() 并输出 @item 变量,它是一个 DynamicNodeList。如果我做类似的事情..
foreach(var child in item)
{
<div>
<blockquote>@child.quoteText<span>- @child.quoteSignature</span></blockquote>
</div>
}
它有效,但当然我得到了所有的报价。所以我猜这至少证明了数据是有效的,并且属性名称是有效的。使用 Random() 似乎是个问题。由于我对 Razor 很陌生,我希望这只是我的疏忽。
* UPDATE * 错误日志中的错误如下
2013-09-03 19:34:00,142 [11] WARN umbraco.macro - [Thread 24] Error loading MacroEngine script (file: CFRandomQuote.cshtml, Type: ''. Exception: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'umbraco.MacroEngines.DynamicNodeList' does not contain a definition for 'Random'
at CallSite.Target(Closure , CallSite , Object , Int32 )
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at ASP._Page_macroScripts_CFRandomQuote_cshtml.Execute() in c:\inetpub\cf\macroScripts\CFRandomQuote.cshtml:line 5
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.WebPages.WebPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at umbraco.MacroEngines.RazorMacroEngine.ExecuteRazor(MacroModel macro, INode currentPage)
at umbraco.MacroEngines.RazorMacroEngine.Execute(MacroModel macro, INode currentPage)
at umbraco.macro.loadMacroScript(MacroModel macro)
at umbraco.macro.renderMacro(Hashtable pageElements, Int32 pageId)
感谢大家!