从Controller返回true
而不是True
。
我在变量中存储一个布尔值,用于指示购物车/摘要中是否存在产品。
要实现这一点,我正在做以下事情:
[...]
IsAdded = sessionStore.CheckExistanceOnSummary(product.productId)
[...]
但是,当我在视图上显示IsAdded
的值时,返回值为True
或False
- 并且JavaScript期待true
或false
我需要的是发送true
或false
而不是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,但没有帮助我。
答案 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”的显示模板:
创建名为“JsBoolean.cshtml”的显示模板:
在您的视图中,使用@Html.DisplayFor()
并指定新模板。
<强> 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)