J'utilise un if else dans la vue Razor pour vérifier la valeur nulle comme ceci:
@foreach (var item in Model)
{
<tr id="@(item.ShopListID)">
<td class="shoptablename">@Html.DisplayFor(modelItem => item.Name)
</td>
<td class="shoptableamount">
@if (item.Amount == null)
{
Html.Display("--");
}
else
{
String.Format("{0:0.##}", item.Amount);
}
</td>
</tr>
}
Cependant, peu importe que le montant de mon modèle soit nul ou ait une valeur, le rendu HTML ne contient aucune valeur dans le montant.
Je me demande pourquoi cela se produit. Une idée?
Merci...
MODIFIER:
Décidé de le faire dans le contrôleur:
// Function to return shop list food item amount
public string GetItemAmount(int fid)
{
string output = "";
// Select the item based on shoplistfoodid
var shopListFood = dbEntities.SHOPLISTFOODs.Single(s => s.ShopListFoodID == fid);
if (shopListFood.Amount == null)
{
output = "--";
}
else
{
output = String.Format("{0:0.##}", shopListFood.Amount);
}
return output;
}
et appelez à View comme:
<td class="shoptableamount">
@Html.Action("GetItemAmount", "Shop", new { fid = item.ShopListFoodID })
</td>
Vous devez utiliser la @()
@if (item.Amount == null)
{
@("--");
}
else
{
@String.Format("{0:0.##}", item.Amount)
}
Comme indiqué dans les commentaires et autres réponses, le Html.Display
n'est pas pour afficher des chaînes, mais pour afficher des données du dictionnaire ViewData
ou d'un Model
. Lire http://msdn.Microsoft.com/en-us/library/ee310174%28v=VS.98%29.aspx#Y0
Je pense que vous voulez afficher "-----" si le montant est nul.
@foreach (var item in Model)
{
<tr id="@(item.ShopListID)">
<td class="shoptablename">@Html.DisplayFor(modelItem => item.Name)
</td>
<td class="shoptableamount">
@if (item.Amount == null)
{
@Html.Raw("--")
}
else
{
String.Format("{0:0.##}", item.Amount);
}
</td>
</tr>
}
C'est parce que vous n'utilisez pas correctement la méthode Display()
. La surcharge que vous utilisez est Display(HtmlHelper, String)
. Si vous recherchez "-" comme texte, vous devez utiliser quelque chose comme:
@Html.Label("--");
Il y a en fait deux autres façons d'afficher du texte à partir d'un bloc de code dans le rasoir en plus du @ ("") suggéré, en utilisant une balise <text> et c'est un raccourci @:
@{
@("--")
<text>--</text>
@:--
}
Le code ci-dessus s'affichera - trois fois.