Razor Partial View抛出错误意外<

时间:2014-12-08 11:05:10

标签: c# asp.net-mvc-4 razor partial-views umbraco7

我有一个剃刀模板,它调用局部视图,然后调用另一个局部视图。

模板 - >引言行(局部视图) - > (该行中的部分视图)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语句之外的解决方案。

有人发现不那么刻意的错误吗?

1 个答案:

答案 0 :(得分:1)

我很确定这里的罪魁祸首是你的代码是:

@if (...) { ... }
<!-- Else only show the Title -->
else { ... }

以及@ifelse块之间您应该使用C#注释语法而不是XML注释语法。所以这应该解决问题:

@if (...) { ... }
// Else only show the Title
else { ... }