我在Razor视图中使用if else来检查这样的空值:
@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> }
但是,无论我的模型数量是null还是具有值,所呈现的html不包含任何值。
我不知道为什么会发生这种情况。任何想法?
谢谢…
编辑:
决定在控制器中做到:
// 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; }
并在视图中调用如下:
<td class="shoptableamount"> @Html.Action("GetItemAmount","Shop",new { fid = item.ShopListFoodID }) </td>
解决方法
你必须使用@()
@if (item.Amount == null) { @("--"); } else { @String.Format("{0:0.##}",item.Amount) }
如注释和其他答案所述,Html.Display不用于显示字符串,而是用于显示ViewData字典或模型中的数据。阅读http://msdn.microsoft.com/en-us/library/ee310174%28v=VS.98%29.aspx#Y0