MVC5中的显示模板行为是否已从MVC3更改?

时间:2016-07-07 11:06:59

标签: asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-5

我已经从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,一定有变化,因为它曾经有效。

1 个答案:

答案 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更具可读性。