true而不是True(C#)

时间:2013-07-17 18:11:07

标签: c# asp.net-mvc asp.net-mvc-4

目标

从Controller返回true而不是True

问题

我在变量中存储一个布尔值,用于指示购物车/摘要中是否存在产品。

要实现这一点,我正在做以下事情:

[...]
IsAdded = sessionStore.CheckExistanceOnSummary(product.productId)
[...]

但是,当我在视图上显示IsAdded的值时,返回值为TrueFalse - 并且JavaScript期待truefalse

我需要的是发送truefalse而不是C#发送的方式。

我已经尝试了什么

我已经尝试为此更改上面的代码片段:

IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ? 
    "true" : 
    "false")

但调试器会返回以下错误:

  

错误5无法将类型'string'隐式转换为'bool'

几行代码

CheckExistanteOnSummary的实施是:

public bool CheckExistanceOnSummary(Nullable<int> productId)
{
    List<Products> productsList = 
        (List<Products>)Session[summarySessionIndex];

    if (productsList.Where
        (product => product.id == (int)productId).FirstOrDefault() == null)
        return false;
    else
        return true;
}

重复的?

我看了this topic,但没有帮助我。

6 个答案:

答案 0 :(得分:23)

作为布尔值(bool),值将始终为“True”或“False”。如果要在转换为字符串时以不同方式表示,可以在视图中执行以下操作:

@Model.IsAdded.ToString().ToLower()

答案 1 :(得分:4)

这不起作用,因为IsAdded是布尔值而“true”是字符串

IsAdded = (sessionStore.CheckExistanceOnSummary(product.productId) ? 
    "true" : 
    "false")

尝试在javascript中使用它,将其转换为Lowcase()。

答案 2 :(得分:4)

为了可重用性,您可以为bool创建一个“true”/“false”的显示模板:

  1. 创建名为“JsBoolean.cshtml”的显示模板:

  2. 在您的视图中,使用@Html.DisplayFor()并指定新模板。

  3. <强> JsBoolean.cshtml:

    @model Boolean
    
    @(Model ? "true" : "false")
    

    在您看来:

    @Html.DisplayFor(m => m.IsAdded, "JsBoolean")
    

    使用此方案,您为javascript目的在视图中添加了“可重用性”。您也可以使用此(如果需要)将布尔值显示为“是”或“否”或其他内容。

    修改

    如果您的布尔值始终为小写,那么您可以通过将其自定义视图称为“Boolean.cshtml”来使其成为默认视图。然后,您可以简化您的使用:

    @Html.DisplayFor(m => m.IsAdded)
    

答案 3 :(得分:3)

您可以添加一个额外的只读属性(例如jsIsAdded),它返回IsAdded.ToString()。ToLower()。

答案 4 :(得分:2)

也许你可以加入以下代码:

IsAdded.ToString().ToLower();

有点像这样:

public string JSCheckExistanceOnSummary(Nullable<int> productId)
{
    return  CheckExistanceOnSummary(productId).ToString().ToLower();
}

答案 5 :(得分:2)

你能用一点吗? 0或1 这种方式无论如何。此外,大多数bool很可能有点(例如检查sql)