【发布时间】:2016-11-09 16:20:05
【问题描述】:
我已从 MVC3/Razor 升级到 MVC5/Razor。
我发现我的显示模板不再读取模型值。
模板名为“MyTemplate”:
@model System.Object
@{
if (Model !=null)
{
string.Format("{0:0.00}", Model);
}
else
{
@:-
}
}
调用者:
@Html.DisplayFor(modelItem => item.mydecimalvalue, "MyTemplate")
当我通过调试器跟踪模型时,模型返回 null。它曾经在 MVC3 中运行良好
对此的任何帮助将不胜感激。
编辑 1
string.Format("{0:0.00}", Model);
应该是:
@(string.Format("{0:0.00}", Model));
在 MVC4 或 5 中一定有一些改变,因为它过去可以工作。
【问题讨论】:
-
不清楚你在问什么。您的模型类型是
System.Object。为什么?item.mydecimalvalue是什么类型,十进制?你为什么在你的模板中检查它是否为空(如果(模型!=空))?什么是“返回null”?Model.ToString()?string.Format行是什么,为什么要评论它?请提供一些细节。谢谢。 -
感谢您的回复。输入类型是十进制,尽管值可能为空,在这种情况下我想显示“-”。如果有值,我想将小数格式化为 2 位小数。我已将我的代码更正为更清晰。
-
"item.mydecimalvalue" 在调用视图中确实有一个值。我已经用调试器检查了这个并将它写出来。但是,该值在模板中被转换为 null。
-
只是出于好奇,将模型类型更改为
@model System.Decimal?或@model System.Nullable<System.Decimal>是否有效? -
@model System.Decimal?不起作用。会尝试另一个。
标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-5