我有一个剃刀模板,它调用局部视图,然后调用另一个局部视图。
模板 - >引言行(局部视图) - > (该行中的部分视图)Slider Partial,Box 1 - 4 partials。
当我运行代码时,我在下面的代码中标记了一个无用的错误: 介绍行
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<div class="wrapper row3">
<div id="container">
<!-- ################################################################################################ -->
<div id="homepage" class="clear">
<div class="one_third first">
<section class="main_slider">
@Html.Partial("IntroSlider")
</section>
</div>
<div class="two_third">
<div id="intro">
<ul class="nospace center clear">
<li class="one_quarter first">
<!-- THE EXCEPTION IS THROWN ON THE NEXT LINE -->
@Html.Partial("IntroBoxOne")
</li>
<li class="one_quarter">
@Html.Partial("IntroBoxTwo")
</li>
<li class="one_quarter">
@Html.Partial("IntroBoxThree")
</li>
<li class="one_quarter">
@Html.Partial("IntroBoxFour")
</li>
</ul>
</div>
</div>
</div>
<!-- ################################################################################################ -->
<div class="clear"></div>
</div>
</div>
我假设错误在IntroBoxOne部分中,后面是: 的 IntroBoxOne
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
<!--TODO: If no box'N'Content should we show the box at all? And if Not what size do we change any shown box to? -->
<article class="boxholder rnd8">
<!-- Only show the top Image if one has been selected -->
@{
if (!string.IsNullOrEmpty(@Umbraco.Field("topImageBoxOne").ToString()))
{
dynamic dynamicMediaItem = Umbraco.Media(Umbraco.Field("topImageBoxOne").ToString());
<div class="push30"><img><img style="max-width:30px;max-height:30px;" src="@dynamicMediaItem.Url" alt="@Umbraco.Field("boxOneAltText")"></div>
}
}
<!-- Only show the Image if one is selected -->
@if (!string.IsNullOrEmpty(Umbraco.Field("boxOneIcon").ToString()))
{
dynamic dynamicMediaItem = Umbraco.Media(Umbraco.Field("boxOneIcon").ToString());
<span class="push30"><img style="max-width:30px;max-height:30px;" src="@dynamicMediaItem.Url" alt="@Umbraco.Field("boxOneAltText")">@Umbraco.Field("boxOneTitle")</span>
}
<!-- Else only show the Title -->
else
{
<span class="push30">@Umbraco.Field("boxOneTitle")</span>
}
<!-- Show the body content -->
<p>@Umbraco.Field("boxOneContent")</p>
<!-- Only show the button if has text. -->
@{if (!string.IsNullOrEmpty(Umbraco.Field("boxOneIcon").ToString()))
<footer><a href="#" class="button small gradient green rnd5">@Umbraco.Field("boxOneButtonText")</a></footer>
}
</article>
了解我并且知道我没有在很长时间内完成这种编码,错误可能在@If else块中,但我已经尝试了很多东西来对它进行排序;一切都无济于事。
更新一次:
错误肯定在代码的这一部分:
@if (!string.IsNullOrEmpty(Umbraco.Field("boxOneIcon").ToString()))
{
dynamic dynamicMediaItem = Umbraco.Media(Umbraco.Field("boxOneIcon").ToString());
<span class="push30"><img style="max-width:30px;max-height:30px;" src="@dynamicMediaItem.Url" alt="@Umbraco.Field("boxOneAltText")">@Umbraco.Field("boxOneTitle")</span>
}
<!-- Else only show the Title -->
else
{
<span class="push30">@Umbraco.Field("boxOneTitle")</span>
}
更新二:
上面的IF ELSE语句抛出一个错误但是这样的双if语句成功:
@{
if (!string.IsNullOrEmpty(Umbraco.Field("boxOneIcon").ToString()))
{
dynamic dynamicMediaItem = Umbraco.Media(Umbraco.Field("boxOneIcon").ToString());
<span class="push30"><img style="max-width:30px;max-height:30px;" src="@dynamicMediaItem.Url" alt="@Umbraco.Field("boxOneAltText")">@Umbraco.Field("boxOneTitle")</span>
}
<!-- Else only show the Title -->
}
@{
if (string.IsNullOrEmpty(Umbraco.Field("boxOneIcon").ToString()))
{
<span class="push30"> @Umbraco.Field("boxOneTitle") </span>
}
<!-- Else only show the Title -->
}
显然,IF ELSE块中的ELSE语句的语法是错误的 - 但我没有找到除两个If语句之外的解决方案。
有人发现不那么刻意的错误吗?
答案 0 :(得分:1)
我很确定这里的罪魁祸首是你的代码是:
@if (...) { ... }
<!-- Else only show the Title -->
else { ... }
以及@if
和else
块之间您应该使用C#注释语法而不是XML注释语法。所以这应该解决问题:
@if (...) { ... }
// Else only show the Title
else { ... }