25

以下是我的一个 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

4 回答 4

33

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

if (item.TableName.Equals("AgentContEd"))
{
    @:CE
}
else if (item.TableName.Equals("AgentProductTraining"))
{
    <text>PT</text>
}
于 2013-01-17T20:31:11.537 回答
18

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

@Html.DisplayName(string)
于 2014-09-18T23:19:17.420 回答
11

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

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

        if (item.TableName.Equals("AgentContEd"))
        {
            <text>CE</text>
        }
于 2013-01-17T20:27:30.557 回答
2

您必须让 Razor 意识到您正在尝试显示文字文本。有关更多信息,请参阅这个优秀的
Razor 语法指南

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

于 2013-01-17T20:32:07.150 回答