所以我从一个需要转换为MVC的数字代理商那里获得了html。据我所知,Html.CheckboxFor(..)创建了一个额外的隐藏输入字段,以捕获非选择的复选框为false。
然而,在我的页面上,我无法选择我的复选框。如果我删除Firebug中的<input type="hidden....>
,我可以选中该复选框。 (因为我无法点击复选框并直观地选中它)
生成的html是:
(html提供给我)
<div class="terms well">
<div class="checkbox">
<label class="checkbox-inline">
<input type="checkbox" id="authorize" name="authorize">
<span class="checkbox-display"><span class="checkbox-display-inner fa fa-check"></span></span>
<span class="checkbox-label">I accept full responsibility for the information I provide on this form.</span>
</label>
</div>
</div>
(由html助手生成的html - 我没有费心试图使用标签,因为我不确定样式是否仍然有效。)
<div class="terms well">
<div class="checkbox">
<label class="checkbox-inline">
<input type="checkbox" value="true" name="AuthorisePayment" id="AuthorisePayment"><input type="hidden" value="false" name="AuthorisePayment">
<span class="checkbox-display"><span class="checkbox-display-inner fa fa-check"></span></span>
<span class="checkbox-label terms-credit" style="display: inline-block;">I accept full responsibility for information and authorisations I provide on this form.</span>
</label>
</div>
</div>
有人有任何想法吗?我不是100%要在这篇文章中包含什么来帮助找到答案。
剃刀视图包含:
<div class="terms well">
<div class="checkbox">
<label class="checkbox-inline">
@Html.CheckBoxFor(model => model.AuthorisePayment)
<span class="checkbox-display"><span class="checkbox-display-inner fa fa-check"></span></span>
<span class="checkbox-label terms-credit">@Editable(x => x.PaymentTemplate.CreditCardTerms)</span>
</label>
</div>
</div>
我可以从我的动作控制器中获取表单中的值,但我不明白为什么模型绑定方式不起作用。
答案 0 :(得分:2)
我遇到了同样的问题。 Checkboxfor从模型中获取他的名字。 问题是:
当两种不同的型号具有相同的属性时, 并且在同一页面上都有一个Checkboxfor, 所描述的问题就出现了。
就我而言,组织模型(1)和联系人模型(2)具有相同的属性:
public bool IsActive {get;组; }
解 在我的情况下,给他们一个唯一的ID:
(1):@Html.CheckBoxFor(model => model.IsActive).HtmlAttributes(new { id = "organisation_active" } )
(2):@Html.CheckBoxFor(model => model.IsActive).HtmlAttributes(new { id = "contact_active" } )
答案 1 :(得分:0)
我的解决方案是删除阻碍并始终对控制器错误的隐藏类型输入。 我用 javascript 拿了它 $ ("输入 [名称 = '非活动'] [类型 = '隐藏']")。消除 (); 并且运行正常。