Viewbag 值在适当的情况下呈现。我如何强制它在预期的情况下呈现?

Viewbag value is rendering in proper case. How do I force it to render in the intended case?

在我的控制器中,我将 Viewbag 值设置为 false,但是当我在视图上渲染它时,它会出现 False。我该如何防止这种情况?

我的控制器:

 ViewBag.IsEditable = false;

我的看法:

$.fn.editable.defaults.disabled =@ViewBag.IsEditable;

因为它是用大写字母 F 呈现的,所以布尔值不适用于我的 Jquery 调用。

您有一个布尔值,您想要计算该值以创建一些 Javascript 代码。在这种情况下,@ViewBag.IsEditable 基本上是在您的布尔值上调用 ToString(),这会产生大写的 True 或 False。

C# 确实有小写关键字 truefalse,但它们是代表布尔对象的文字,它总是 returns 调用 ToString() 时的大写 True 或 False。

我建议使用三元运算符计算布尔值。

$.fn.editable.defaults.disabled = @( ViewBag.IsEditable ? "true" : "false");

更清楚地了解这里发生了什么的方法可能是这样写:

@( ViewBag.IsEditable ?
  "$.fn.editable.defaults.disabled = true;" :
  "$.fn.editable.defaults.disabled = false;")

你混淆了你的类型。 truefalse 关键字是布尔值。在 .NET 世界中,.ToString() 分别表示为 "True" 和 "False"。为了让您的原始代码正常工作,您可以尝试

$.fn.editable.defaults.disabled =@ViewBag.IsEditable.ToString().ToLower()

您可能想考虑使用扩展方法来简化操作。请注意,您需要在视图中包含扩展 class 的命名空间 - 直接或通过 web.config。该标志还需要成为模型的一部分(或转换为 bool 以便它可以解析扩展方法)

   public static class BooleanExtensions
   {
        public static string AsJs(this bool source)
        {
            return source ? "true" : "false";
        }
   }

用作

$.fn.editable.defaults.disabled = @(((bool)ViewBag.IsEditable).AsJs())

$.fn.editable.defaults.disabled = @Model.IsEditable.AsJs()