web-dev-qa-db-fra.com

@ Html.DisplayText n'affichera pas réellement le texte

Ce qui suit est la première section de la première ligne d'un tableau sur l'une de mes pages ASP Index MVC3. J'ai parcouru le code lorsque cette page se charge, et je peux voir que l'évaluation de les conditions sont correctement remplies, mais pas pour les affichages "CE" ou "PT". Je suis assez nouveau pour ASP MVC, quelqu'un peut-il m'aider avec la syntaxe/expliquer ce qui se passe?

@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>
23
NealR

utilisation @: ou <text></text> pour spécifier du texte html dans un code côté serveur si vous n'avez pas d'autre html dedans.

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

Il existe 5 façons différentes d'afficher du texte. Pour afficher une chaîne, vous devez utiliser

@Html.DisplayName(string)
15
vincent de g

Le DisplayText est synonyme de Model.PropertyName .. donc Model.PropertyName = @ Html.DisplayText ('PropertyName')

Donc, si CE n'est pas un attribut de votre modèle et que vous essayez simplement de produire du texte brut plutôt que de remplacer cette déclaration par le texte brut:

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

Vous devez faire comprendre à Razor que vous essayez d'afficher du texte littéral. Voir ce bien
Guide de syntaxe Razor pour plus d'informations.

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

2
danmiser