将字符串转换为布尔值以在MVC3中使用布尔显示模板

时间:2014-04-14 06:37:02

标签: c# asp.net-mvc asp.net-mvc-3 razor

我有一个我无法控制的模型。它有一个名为Pass的字符串属性,它包含一个表示传递的“1”和一个表示失败的“0”。

我还有一个显示模板,用特定图像替换布尔属性,具体取决于布尔值是true还是false。

当我尝试在我的Razor模板中使用@Html.DisplayFor(c => (c.Pass == "1"))时,我得到了一个

  

System.InvalidOperationException:模板只能用于   字段访问,属性访问,单维数组索引或单个   参数自定义索引器表达式。

如何修改我的视图以便c.Pass == "1"被解释为真值,并使用我可用的布尔显示模板。

2 个答案:

答案 0 :(得分:2)

您可以在视图中创建一个布尔变量:

@{ var pass = Model.Pass == "1"; }
@Html.DisplayFor(c => pass)

答案 1 :(得分:1)

使用custom display template

1)在模型中添加属性 e.g .-

 [UIHint("PassFail")]
    public decimal Pass { get; set; }

2)创建一个显示模板PassFail.cshtml @model string

@if (Model == "1")
{
    <text>Pass</text>
}
else
{
    <text>Fail</text>
}

3)现在你可以直接使用

@Html.DisplayFor(e => e.Pass)