我在这样的视图中使用bootstrap-toggle和Html.CheckBoxFor()帮助器:
@Html.CheckBoxFor(m => m.issueFlag,
new { id = "toggle-switch",
data_toggle = "toggle",
data_size = "normal",
data_on = "Issue on Invoice",
data_off = "No Issue on Invoice",
data_onstyle="danger",
data_offstyle="success",
data_width = "200" })
交换机出现并按预期在前端运行,但是在提交表单时,该值始终为false。在控制器中正确捕获表单中的其他内容,如复选框,下拉菜单和文本框。控制器中的POST操作声明为:
[HttpPost]
[AuthorizeRights(Rights = "Viper_ViewAudit,Viper_EditAudit")]
public ActionResult ShowImage(PDFViewer pdfViewerModel, string Command)
{
... content ...
}
我在某处做错了吗?为什么m.issueFlag总是假的?
(我将提供更多需要的代码,我不确定还有什么相关的内容。)
更新 生成的HTML是
<input data-off="No Issue on Invoice" data-offstyle="success"
data-on="Issue on Invoice" data-onstyle="danger" data-size="normal"
data-toggle="toggle" data-val="true"
data-val-required="The issueFlag field is required." data-width="200"
id="toggle-switch" name="issueFlag" type="checkbox"
value="true" />
<input name="issueFlag" type="hidden" value="false" />
我现在也尝试过直接输入标签而不使用帮助器而没有任何改变。
答案 0 :(得分:1)
从对象html属性中删除( id =&#34;切换开关&#34; ),因为您将主ID( issueFlag )覆盖为(扳钮开关强>)。
如果你对bootstrap-toggle有问题,只需使用jquery并添加如下属性:
@Html.CheckBox("abc", new { @class="abc1"});
<script>
function f() {
$('.abc1').attr('data-toggle', 'toggle')
.attr('data-onstyle', 'success')
.attr('data-offstyle', 'danger')
};
f();
</script>