Umbraco Can';无法获取特定子页的属性
我4天前才开始使用Umbraco Can';无法获取特定子页的属性,umbraco,umbraco7,Umbraco,Umbraco7,我4天前才开始使用umbraco 我有一个名为“关于我们”的页面,它是“Home”下的一个孩子,我需要在“Home”页面中获取它的一些属性 我创建了一个局部视图宏来执行此操作,但在加载局部视图脚本时出现了错误 下面是我的代码: @{ var selection = CurrentPage.Children.Where(x => x.Name == "aboutus"); } @if (selection.Any()) { <ul> @foreach (
umbraco
我有一个名为“关于我们”
的页面,它是“Home”
下的一个孩子,我需要在“Home”
页面中获取它的一些属性
我创建了一个局部视图宏来执行此操作,但在加载局部视图脚本时出现了错误
下面是我的代码:
@{ var selection = CurrentPage.Children.Where(x => x.Name == "aboutus"); }
@if (selection.Any())
{
<ul>
@foreach (var item in selection)
{
<div class="sc-inner">
<h4>
@item.PageTitle</h4>
<p>
@Umbraco.Truncate(@item.mainAboutDescription, 100)</p>
<a class="btn btn-danger" href="@item.Url">Read More...</a>
</div>
break;
}
</ul>
}
@{var selection=CurrentPage.Children.Where(x=>x.Name==“aboutus”);}
@if(selection.Any())
{
@foreach(选择中的var项目)
{
@item.PageTitle
@Umbraco.Truncate(@item.main关于说明,100)
打破
}
}
有人能告诉我我做错了什么吗
提前谢谢
编辑:
我在网站上得到的错误如下
加载部分视图脚本时出错(文件:~/Views/MacroPartials/homePage\u aboutUsSection.cshtml)假设该部分是继承
UmbracoTemplatePage
的CurrentPage
属性是动态的
,则不能将lambda表达式用作动态调度操作的参数
如果希望使用Linq查询内容,请使用Model.content
而不是CurrentPage
,后者是i发布的内容
@{ var selection = Model.Content.Children.Where(x => x.Name == "aboutus"); }
注意:Name
属性将返回CMS中输入的文档名称,很可能是“关于我们”,而不是“关于我们”
使用about将返回一个IEnumerable
,因此您需要使用GetPropertyValue
方法,而不是动态访问内容:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{ var selection = Model.Content.Children.Where(x => x.Name == "aboutus"); }
@if (selection.Any())
{
<ul>
@foreach (var item in selection)
{
<li class="sc-inner">
<h4>
@item.GetPropertyValue("pageTitle")
</h4>
<p>
@Umbraco.Truncate(@item.GetPropertyValue<string>("mainAboutDescription"), 100)
</p>
<a class="btn btn-danger" href="@item.Url">Read More...</a>
</li>
break;
}
</ul>
}
@继承Umbraco.Web.Mvc.UmbracoTemplatePage
@{var selection=Model.Content.Children.Where(x=>x.Name==“aboutus”);}
@if(selection.Any())
{
@foreach(选择中的var项目)
{
-
@item.GetPropertyValue(“页面标题”)
@Umbraco.Truncate(@item.GetPropertyValue(“mainAboutDescription”),100)
打破
}
}
假设分部继承的是UmbracoTemplatePage
,CurrentPage
属性是动态的
,则不能将lambda表达式用作动态调度操作的参数
如果希望使用Linq查询内容,请使用Model.content
而不是CurrentPage
,后者是i发布的内容
@{ var selection = Model.Content.Children.Where(x => x.Name == "aboutus"); }
注意:Name
属性将返回CMS中输入的文档名称,很可能是“关于我们”,而不是“关于我们”
使用about将返回一个IEnumerable
,因此您需要使用GetPropertyValue
方法,而不是动态访问内容:
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{ var selection = Model.Content.Children.Where(x => x.Name == "aboutus"); }
@if (selection.Any())
{
<ul>
@foreach (var item in selection)
{
<li class="sc-inner">
<h4>
@item.GetPropertyValue("pageTitle")
</h4>
<p>
@Umbraco.Truncate(@item.GetPropertyValue<string>("mainAboutDescription"), 100)
</p>
<a class="btn btn-danger" href="@item.Url">Read More...</a>
</li>
break;
}
</ul>
}
@继承Umbraco.Web.Mvc.UmbracoTemplatePage
@{var selection=Model.Content.Children.Where(x=>x.Name==“aboutus”);}
@if(selection.Any())
{
@foreach(选择中的var项目)
{
-
@item.GetPropertyValue(“页面标题”)
@Umbraco.Truncate(@item.GetPropertyValue(“mainAboutDescription”),100)
打破
}
}
在代码中使用Name属性进行查询是一种非常糟糕的做法-例如,如果有人将名称更改为About
。你的密码会被破解。如果节点上有其他唯一的东西,那么它会更好
例如,如果您的about us页面有aboutUs文档类型,您可以使用:
Model.Content.Children.Where(x => x.DocumentTypeAlias == "exactNameOfYourDocTypeAliasHere")
或者,尽管没有那么健壮,但可以使用页面的Id
Model.Content.Children.Where(x => x.Id == 1234)
Id的更改可能性远小于这样一个关键页面的名称
我通常也不会在代码中使用Id,但使用Name属性在代码中进行查询要比使用Name好得多,这是一种非常糟糕的做法—例如,如果有人将Name更改为About
,该怎么办。你的密码会被破解。如果节点上有其他唯一的东西,那么它会更好
例如,如果您的about us页面有aboutUs文档类型,您可以使用:
Model.Content.Children.Where(x => x.DocumentTypeAlias == "exactNameOfYourDocTypeAliasHere")
或者,尽管没有那么健壮,但可以使用页面的Id
Model.Content.Children.Where(x => x.Id == 1234)
Id的更改可能性远小于这样一个关键页面的名称
我通常也不会在代码中使用Id,但它比名称好得多请发布error@Anth12,谢谢回复。请参阅已编辑的问题。Umbraco将通过一条一般消息(可以从config/Umbraco.config中启用错误)提示该错误。只是一个注释,您在ul
中嵌套了div
元素。您应该使用li
来代替,或者更改ul
。您可以发布error@Anth12,谢谢回复。请参阅已编辑的问题。Umbraco将通过一条一般消息(可以从config/Umbraco.config中启用错误)提示该错误。只是一个注释,您在ul
中嵌套了div
元素。您应该使用li
来代替,或者更改ul
。哦,非常感谢您的解释。我欠你的债。您提到的name属性可以返回为“About Us”,而不是我前面指定的“aboutus”。非常感谢。太好了,没问题。非常感谢你的解释。我欠你的债。您提到的name属性可以返回为“About Us”,而不是我前面指定的“aboutus”。非常感谢。太好了,没问题。