У меня возникла странная проблема, надеясь, что у вас у всех есть какие-то указатели. Я использую Umbraco 4.11.10 и пытаюсь выполнить требование о отображении 1 случайной цитаты из коллекции котировок. Очень странно, что этот точный код работает на другом сайте, используя ту же версию Umbraco.
Объект Quote имеет только два свойства ... quoteText и quoteSignature. Вот мой весь скрипт бритвы (который в настоящее время терпит неудачу).Umbraco Razor - скрипт не работает с Children.Random
@inherits umbraco.MacroEngines.DynamicNodeContext
@{
var item = @Model.NodeById(1113).Children.Random();
<div>
<blockquote>@item.quoteText<span>- @item.quoteSignature</span></blockquote>
</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)
Спасибо всем!
Должно ли это быть '@ child.quoteText' и т. Д. В коде, а не' @ item.'? – Digbyswift
yep - ошибка копирования патча. Я обновил фрагмент - спасибо! – hardba11
Не могли бы вы обновить вопрос с ошибкой из файлов журнала? Должна быть трассировка стека, показывающая, что такое ошибка. Они расположены в ~/app_data/logs/ – Digbyswift