@ Html.DisplayText实际上不会显示文本

Nea*_*alR 24 c# asp.net-mvc razor

以下是我的一个ASP MVC3索引页面上表格第一行的第一部分.当页面加载时我已经完成了代码,并且可以看到条件的评估已正确完成,但不是"CE"或"PT"显示.我是ASP MVC的新手,有人可以帮我解释语法/解释发生了什么吗?

@foreach (var item in Model.Where(i => i.Status != "C")) {
var Id = item.Id;
<tr>
    <td>
    @if (!String.IsNullOrWhiteSpace(item.TableName))
    {
        if (item.TableName.Equals("AgentContEd"))
        {
            @Html.DisplayText("CE");
        }
        else if (item.TableName.Equals("AgentProductTraining"))
        {
            @Html.DisplayText("PT");
        }
        else
        {
            @Html.DisplayFor(modelItem => item.TableName)
        }             
    }           
    </td>
Run Code Online (Sandbox Code Playgroud)

Dmi*_*try 30

如果你没有任何其他的html,请在服务器端代码中使用@:<text></text>指定html文本.

if (item.TableName.Equals("AgentContEd"))
{
    @:CE
}
else if (item.TableName.Equals("AgentProductTraining"))
{
    <text>PT</text>
}
Run Code Online (Sandbox Code Playgroud)


小智 16

有5种不同的显示文字的方式.为了显示您需要使用的字符串

@Html.DisplayName(string)
Run Code Online (Sandbox Code Playgroud)

  • 真的希望我知道为什么`DisplayText`不起作用,但确实如此 (3认同)
  • 请参阅贾斯汀·比克内尔(Justin Bicknell)的答案,DisplayText实际上应称为DisplayDisplayTextFor (2认同)

Jus*_*ell 11

DisplayText是Model.PropertyName的同义词.所以Model.PropertyName = @ Html.DisplayText('PropertyName')

因此,如果CE不是模型的属性,并且您只是尝试输出原始文本而不是仅使用原始文本替换该语句:

        if (item.TableName.Equals("AgentContEd"))
        {
            <text>CE</text>
        }
Run Code Online (Sandbox Code Playgroud)