我使用局部视图来列出特定节点的前5个子节点。
这是有效的,但前提是我在之前放一个div
前臂
例如
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<div class="title">Test</div>
<ul>
@{
var ow = @owCore.Initialise(1085);
<div> </div>
var node = Umbraco.Content(1105);
foreach (var item in node
.Children.Where("Visible")
.OrderBy("Id descending")
.Take(5)
)
{
<li><a href="@item.Url">@item.pageTitle</a></li>
}
}
</ul>
生成所需的未排序列表。
但是,如果我删除空的div
@继承Umbrac.Web.Mvc.UmbracoTemplatePage
测验<ul>
@{
var ow = @owCore.Initialise(1085);
var node = Umbraco.Content(1105);
foreach (var item in node
.Children.Where("Visible")
.OrderBy("Id descending")
.Take(5)
)
{
<li><a href="@item.Url">@item.pageTitle</a></li>
}
}
我得到的错误是
编译器错误消息:CS1513:}应为
来源错误:
113号线:114号线:115号线:
Clear看起来关闭"}"的次数太少
假设div强制关闭}?
我已经检查了owCore(这是我在App_Code中构建的函数库:然而,我已经把它剥离了,它现在什么也没做,只是为了确保有匹配的花括号:
@using Umbraco
@using Umbraco.Core.Models
@using Umbraco.Web
@functions{
public static int Initialise(int siteDocID){
return 0;
}
}
但是,如果我从部分视图中删除@owCore代码
@继承Umbrac.Web.Mvc.UmbracoTemplatePage
测验<ul>
@{
var node = Umbraco.Content(1105);
foreach (var item in node
.Children.Where("Visible")
.OrderBy("Id descending")
.Take(5)
)
{
<li><a href="@item.Url">@item.pageTitle</a></li>
}
}
</ul>
一切又好了。
这是否意味着这肯定是owCore的问题,或者只是其他原因导致不匹配
我已经检查了调用此局部视图的模板,找不到问题。
这没有道理。有人能解释一下吗?
谢谢!
这实际上更像是一个剃刀般的问题。
您可以用@{
开始您的代码块,这样您就不需要在owCore
前面使用@。删除它将使其即使没有<div>
也能进行渲染,因为剃刀解析器不再被@
混淆。