【发布时间】:2019-07-11 05:10:49
【问题描述】:
FeatureEvents.bit_Activate = Convert.ToBoolean(collection["bit_Activate"]);
bit_Activate 是复选框,我如何将其转换为上面的布尔值,集合来自 formcollection 变量
【问题讨论】:
标签: asp.net asp.net-mvc
FeatureEvents.bit_Activate = Convert.ToBoolean(collection["bit_Activate"]);
bit_Activate 是复选框,我如何将其转换为上面的布尔值,集合来自 formcollection 变量
【问题讨论】:
标签: asp.net asp.net-mvc
如果未选中,复选框输入不会出现在表单集合中,因此以下内容对您有用:
FeatureEvents.bit_Activate = collection.Keys.Contains["bit_activate"];
PS:复选框例如Html.Checkbox 的Html 助手是HORRID,它放置一个类似名称的隐藏输入以确保元素始终在表单集合中。我发现直接的 Html <INPUT> 效果更好。如果您使用 htm 帮助程序,则需要解析数组以获取值。
【讨论】:
最简单的方法可能是使用 ASP.NET MVC 的内置 ModelBinders,它允许您将 CLR 对象作为操作的输入,而 MVC 框架会为您绑定所有属性。唯一的要求是(按照惯例)在输入对象的属性之后命名表单元素。谷歌“asp.net mvc model binder”获取大量信息和教程。
【讨论】:
您是否关注过您尝试转换为布尔值的值?
我认为你最有可能需要做类似的事情
FeatureEvents.bit_Activate = Convert.ToBoolean(collection["bit_Activate"].checked);
【讨论】:
collection["bit_Active"] 具有.Checked 属性?我认为您需要将其转换为 html 复选框的某种表示形式。
解决方案:
FeatureEvents.bit_Activate = Convert.ToBoolean(Request.Form["bit_Activate"].Contains("true"));
【讨论】: