我已经从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,一定有变化,因为它曾经有效。
答案 0 :(得分:1)
如果您使用Html.FormatValue
作为Razor中String.Format
的首选方式,则此方法有效。
@model System.Object
@{
if (Model != null)
{
@Html.FormatValue(Model, "0.00")
}
else
{
@:-
}
}
参考:
using string.Format in MVC Razor view page
正如您所发现的那样,可能使用
String.Format
,但它是一个PITA,因为需要奇怪的(非直观的)语法。出于这个原因,Html.Format
(一个剃刀扩展)更清洁,IMO更具可读性。