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

时间:2013-01-17 20:17:11

标签: 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>

4 个答案:

答案 0 :(得分:30)

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

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

答案 1 :(得分:14)

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

@Html.DisplayName(string)

答案 2 :(得分:10)

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

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

        if (item.TableName.Equals("AgentContEd"))
        {
            <text>CE</text>
        }

答案 3 :(得分:2)

你必须让Razor意识到你正试图显示文字文本。看到这个好 Razor syntax guide了解更多信息。

if (item.TableName.Equals("AgentContEd")) { <text>CE</text> }