2

因此,我从一家数字机构获得了需要转换为 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>

我可以从我的动作控制器中的表单中获取值,但我不明白为什么这样做的模型绑定方式不起作用。

4

2 回答 2

3

我有同样的问题。Checkboxfor 的名字来源于模型。问题是:

当 2 个不同的模型具有相同的属性,并且在同一页面上都有一个 Checkboxfor 时,就会出现所描述的问题。

就我而言,组织模型 (1) 和联系人模型 (2) 具有相同的属性:

公共布尔 IsActive { 获取;放; }

解决方案给他们一个唯一的ID,在我的例子中:

(1): @Html.CheckBoxFor(model => model.IsActive).HtmlAttributes(new { id = "organisation_active" } ) (2):@Html.CheckBoxFor(model => model.IsActive).HtmlAttributes(new { id = "contact_active" } )

于 2016-10-27T14:57:32.333 回答
0

我的解决方案是删除阻碍并且总是对控制器错误的隐藏类型输入。我用 javascript $ ("input [name = 'Inactive'] [type = 'hidden']"). 消除 (); 它工作正常。

于 2021-03-30T23:09:10.090 回答