Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css Html.CheckboxFor vs Html.editor for vs stright Html?_Css_Asp.net Mvc_Razor_Checkbox - Fatal编程技术网

Css Html.CheckboxFor vs Html.editor for vs stright Html?

Css Html.CheckboxFor vs Html.editor for vs stright Html?,css,asp.net-mvc,razor,checkbox,Css,Asp.net Mvc,Razor,Checkbox,我正在使用一个带有自定义CSS的模板。较少用于复选框,使其显示为是|否、开|关等 使用{@Html.CheckboxFormodel=>model.BooleanProperty,新的{@class=customswitch}会导致一个复选框根本不出现 所以我四处挖掘,发现了很多类似的问题,但到目前为止没有一个解决方案对我有效。我目前正在研究的解决方案是使用自定义EditorFor模板。这是正确地呈现复选框,但是,我所经历的是,如果滑块切换为“否”,它将作为null而不是false传递到控制器,

我正在使用一个带有自定义CSS的模板。较少用于复选框,使其显示为是|否、开|关等

使用{@Html.CheckboxFormodel=>model.BooleanProperty,新的{@class=customswitch}会导致一个复选框根本不出现

所以我四处挖掘,发现了很多类似的问题,但到目前为止没有一个解决方案对我有效。我目前正在研究的解决方案是使用自定义EditorFor模板。这是正确地呈现复选框,但是,我所经历的是,如果滑块切换为“否”,它将作为null而不是false传递到控制器,如果切换为“是”,它将作为on传递到控制器

我知道Html.CheckboxFor呈现一个checkbox元素,后跟一个隐藏的输入元素。这有什么作用?以下是从这两种方法呈现的HTML以及与该特定方法相关的任何问题:

复选框的直接HTML 在…之前在…之后

当这被传递给控制器时,为什么BoolProperty的值为true,false

@Html.CheckboxFormodel=>model.BoolProperty,新{@class=custom switch}

关于隐藏字段

我找不到任何东西表明一个更新了另一个 当值改变时,通过测试,我注意到 值不会更改

不,它没有改变。如果浏览器没有选中复选框,则不会使用该名称提交任何内容。因此,隐藏的建议是在未选中复选框时提交同名值false

当复选框被选中时,如您所说,发布的值为true,false首先是复选框的值,然后是隐藏的值。MVC绑定器处理该字符串,将其转换为真值,并将其设置为BooleanProperty

关于价值观


它是复选框的默认值

隐藏字段用于强制将字段包括在表单帖子中,即使未选中任何内容。如果没有它,根据标准,该字段将完全省略。您不知道假值和不存在的字段之间的区别

至于它为什么用在vs上,这是你可以控制自己的。如果您想要true/false而不是on/off,请使用该选项。on只是默认设置,但不是必需的

<input type="checkbox" class="checkbox" name="BoolProperty" value="true" />
<input type="hidden"   class="checkbox" name="BoolProperty" value="false" />

唯一可能的缺点是,我刚刚成为团队编辑模板的SME。@Nick-工作安全!
<input type="checkbox" checked name="BoolProperty" class="custom-switch">
<label>::before ::after</label>
@model Boolean?
var isChecked = ViewData["checked"] != null && ViewData["checked"].ToString() == "true";


<input type="checkbox" checked="@(isChecked ? "checked" : string.Empty)" name="@name"  class="@ViewData["class"].ToString()" />
<label class="lbl"></label>
<input type="checkbox" class="checkbox" name="BoolProperty" value="true" />
<input type="hidden"   class="checkbox" name="BoolProperty" value="false" />