Razor:条件语句抛出错误中的<text>标记</text>

时间:2014-10-16 15:37:27

标签: c# asp.net-mvc razor

@if (Model.Property != null)
{
    <text>
        <div class="row">
    </text>
    Html.RenderPartial("~/Views/CustomView.cshtml", Model);
    <text> (line throwing error)
        </div>
    </text>
}

错误:&#34;&#34;文字&#34;元素没有关闭。所有元素必须是自动关闭或具有匹配的结束标记。&#34;

我很难理解为什么第二组<text>标签会返回该错误。任何帮助理解它将不胜感激。

2 个答案:

答案 0 :(得分:5)

在Razor中,标签必须正确嵌套。 <text></div></text>不适合嵌套。

我认为在您的情况下,您只需删除所有<text></text>代码:

@if (Model.Property != null)
{
    <div class="row">
        @Html.Partial("~/Views/InTimeTemplate/InputFormElements/ReadMore.cshtml", Model);
    </div>
}

相当于:

@if (Model.Property != null)
{
    <div class="row">
        @{
            Html.RenderPartial("~/Views/InTimeTemplate/InputFormElements/ReadMore.cshtml", Model);
        }
    </div>
}
  • Partial将返回结果,该结果将通过@
  • 呈现
  • RenderPartial会直接呈现它,但您需要引入一个带有@{的C#块... }

答案 1 :(得分:0)

有点太晚但仍然:

就像一个例子,你可以使用&#34; @:&#34;

像这样:

@for (int t = 0; t < Model.TrainLines[i].Stations.Count; t++)
            {
                <circle id="pointA" cx="@stationCounter" cy="@trainLineCounter" r="3" />
               @: <text x="@stationCounter" y="@trainLineCounter" dy="30">A</text>
                stationCounter += 50;
            }