【问题标题】:string was not recognized as the valid boolean字符串未被识别为有效的布尔值
【发布时间】:2019-07-11 05:10:49
【问题描述】:
FeatureEvents.bit_Activate = Convert.ToBoolean(collection["bit_Activate"]);

bit_Activate 是复选框,我如何将其转换为上面的布尔值,集合来自 formcollection 变量

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    如果未选中,复选框输入不会出现在表单集合中,因此以下内容对您有用:

     FeatureEvents.bit_Activate = collection.Keys.Contains["bit_activate"];
    

    PS:复选框例如Html.Checkbox 的Html 助手是HORRID,它放置一个类似名称的隐藏输入以确保元素始终在表单集合中。我发现直接的 Html <INPUT> 效果更好。如果您使用 htm 帮助程序,则需要解析数组以获取值。

    【讨论】:

      【解决方案2】:

      最简单的方法可能是使用 ASP.NET MVC 的内置 ModelBinders,它允许您将 CLR 对象作为操作的输入,而 MVC 框架会为您绑定所有属性。唯一的要求是(按照惯例)在输入对象的属性之后命名表单元素。谷歌“asp.net mvc model binder”获取大量信息和教程。

      【讨论】:

        【解决方案3】:

        您是否关注过您尝试转换为布尔值的值?

        我认为你最有可能需要做类似的事情

        FeatureEvents.bit_Activate = Convert.ToBoolean(collection["bit_Activate"].checked);
        

        【讨论】:

        • 不确定这是否可行。编译器应该如何知道collection["bit_Active"] 具有.Checked 属性?我认为您需要将其转换为 html 复选框的某种表示形式。
        【解决方案4】:
        【解决方案5】:

        解决方案:

        FeatureEvents.bit_Activate = Convert.ToBoolean(Request.Form["bit_Activate"].Contains("true"));
        

        【讨论】:

          猜你喜欢
          • 2016-09-13
          • 2022-01-25
          • 2017-02-21
          • 2017-01-03
          • 1970-01-01
          • 1970-01-01
          • 2017-09-01
          • 2017-03-13
          相关资源
          最近更新 更多