在Razor partial中无法选择MVC 5 Html帮助程序CheckBoxFor

时间:2014-09-23 03:46:35

标签: asp.net-mvc razor html-helper checkboxfor

所以我从一个需要转换为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>

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

2 个答案:

答案 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 拿了它 $ ("输入 [名称 = '非活动'] [类型 = '隐藏']")。消除 (); 并且运行正常。