noneI有一个表单,用户可以在其中通过单击复选框来隐藏或显示字段。我像这样隐藏字段:
 $("#ContactDetail_PostalAddressSameAsAddress").change(function () {
        if ($(this).prop('checked') != true) {
            $("#PostalAddressContainer").show("fast");
            $('#PostalAddressContainer :input').show();
        }
        else {
            $("#PostalAddressContainer").hide("fast");
            $('#PostalAddressContainer :input').hide();
        }
    });我的印象是,带有style="display:none“的字段不会回发。但是,当我提交表单时,客户端验证不会验证隐藏字段,这是我所期望的。但是,在服务器端,由于未设置强制显示:none字段,ModelState.IsValid为false。
在fiddler中,我可以看到显示的表单数据:无字段。请帮帮忙。
发布于 2014-03-20 10:46:50
尝试禁用表单域:
$("#PostalAddressContainer").prop("disabled", true);如果它只是隐藏的,它仍然会与POST请求一起发送。CSS不应该对表单行为有任何影响,因为它的目的是改变事物的显示方式。
请注意,这也是<input type="hidden">的要点-不显示给用户,但仍然与请求一起发送。
发布于 2014-03-20 10:49:00
您可以将其禁用
$('#PostalAddressContainer').attr('disabled', 'disabled');这将不会在POST请求中被考虑。
发布于 2014-03-20 11:06:28
不幸的是,你的印象是错误的。所有成功的控件都被序列化,并在提交表单时由浏览器发送。
The HTML spec defines what makes a control successful.
成功的控件对于提交是“有效的”。每个成功的控件都有与其当前值成对的控件名称,作为提交的表单数据集的一部分。成功的控件必须在表单元素中定义,并且必须具有控件名称。
但是:
如果表单包含多个提交按钮,则只有激活的提交按钮是successful.
元素提供,值由元素提供。只有选定的选项才能成功。如果未选择任何选项,则控制不会成功,并且当表单为submitted.
确定
如果在提交表单时控件没有当前值,则不需要用户代理将其视为成功的控件。
此外,用户代理不应将以下控制视为成功:
已设置declare属性的buttons.
隐藏控件和由于样式表设置而未呈现的控件可能仍会成功。
该规范明确指出,隐藏的表单元素应该发送到服务器。
除了隐藏字段之外,您还需要禁用它们。
$("#PostalAddressContainer :input").prop("disabled", true).hide();https://stackoverflow.com/questions/22522400
复制相似问题