16

目标

返回true而不是True从控制器返回视图。

问题

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

为此,我正在执行以下操作:

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

但是,当我在 View 上显示 的值时IsAdded,返回的是Trueor False——而 JavaScript 期望的是trueor false

我需要的是发送truefalse代替 C# 发送的这种方式。

我已经尝试过的

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

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

但调试器返回以下错误:

错误 5 无法将类型“字符串”隐式转换为“布尔”

几行代码

的实现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;
}

重复?

我读了这个话题,但没有帮助我。

4

6 回答 6

24

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

@Model.IsAdded.ToString().ToLower()
于 2013-07-17T18:14:02.410 回答
4

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

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

尝试通过将其转换为小写()来在 javascript 中使用它。

于 2013-07-17T18:14:55.677 回答
4

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

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

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

JsBoolean.cshtml:

@model Boolean

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

在您看来:

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

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

编辑:

如果您的布尔值总是小写,那么您可以通过调用“Boolean.cshtml”将自定义视图设为默认视图。然后,您可以将使用简化为:

@Html.DisplayFor(m => m.IsAdded)
于 2013-07-17T18:31:17.403 回答
3

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

于 2013-07-17T18:14:32.293 回答
2

也许您可以合并以下代码:

IsAdded.ToString().ToLower();

有点像这样:

public string JSCheckExistanceOnSummary(Nullable<int> productId)
{
    return  CheckExistanceOnSummary(productId).ToString().ToLower();
}
于 2013-07-17T18:20:43.807 回答
2

你能用一点代替吗?无论语言如何,都以这种方式为 0 或 1。大多数布尔值也很可能有点(例如检查sql)

于 2013-07-17T18:25:02.123 回答