San*_*lke 0 c# macros razor visual-studio-2012 umbraco7
我在一个Umbraco 7.0.3宏中得到错误,该宏遍历所有的孩子并且只返回一个列表.首先,我使用Umbraco后台来构建基本的导航和侧面菜单项.同时,一旦设置了本地环境,我就开始在本地工作了.
问题是,我使用后台进行导航构建的代码工作正常但如果项目是在VS2012 Ultimate版本中创建的,相同的代码不起作用,即使我只是从原始工作导航宏粘贴相同的代码.
我收到以下错误:'Umbraco.Web.Models.DynamicPublishedContentList'不包含'Any'的定义,表明页面列表是动态的.令我高兴的是,相同的代码适用于现有导航,那么为什么不使用新项目呢?在VS2012中是否有任何设置标记文件无法使用UTF8编辑器或无效的HTML?
我的问题是如何在剃须刀宏中找到计数或任何项目?我已经尝试了Enumerable items count和任何方法,但没有用.
有关如何查找项目数量的任何指示都会有所帮助.
我正在提供有关Paulo的请求的更多信息.在"startNode.Children.Where("Visible")上出错.Any()"行.以下是宏代码:
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@*
=== Macro Parameters To Create ===
Show:True Alias:nodeId Name:Node ID Type:Content Picker
*@
@if (Model.MacroParameters["startNodeID"] != null)
{
@* Get the start node as a dynamic node *@
var startNode = Umbraco.Content(Model.MacroParameters["startNodeID"]);
if (startNode.Children.Where("Visible").Any())
{
<div class="container">
<div class="row">
@foreach (var page in startNode.Children.Where("Visible"))
{
<div class="col-sm-3 col-md-3">
<div class="thumbnail">
<img src="~/images/Tiles/300x200.jpg" alt="@page.Name">
<div class="caption">
<h3><a href="@page.Url">@page.Name</a></h3>
<p>@page.GetPropertyValue("summary").Substring(0, 100)</p>
<a href="@page.Url" class="btn btn-default">Read More</a>
</div>
</div>
</div>
}
</div>
</div>
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到了同样的问题,以下内容对我有用:只需将你的umbraco属性转换为DynamicPublishedContentList变量(假设该属性确实属于这种类型).
例:
var homePage = CurrentPage.AncestorsOrSelf().Where("DocumentTypeAlias == @0", "yourPageAlias").FirstOrDefault();
var umbracoFolder = homePage.yourUmbracoFolderName;
var umbracoFolderItems = Umbraco.Content(umbracoFolder.ToString());
Umbraco.Web.Models.DynamicPublishedContentList yourList = umbracoFolderItems.yourItems as Umbraco.Web.Models.DynamicPublishedContentList;
Run Code Online (Sandbox Code Playgroud)
yourList.Count() 将工作.
更新:上面的工作,但你可以通过对List而不是DynamicPublishedContentList使你的生活更轻松,所以你不仅有常规的IEnumerable扩展方法,还有索引器.
List<dynamic> items = new List<dynamic>(umbracoFolderItems.yourItems);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6569 次 |
| 最近记录: |