1

我一直在寻找这个答案的stackoverflow。似乎无法与他们一起去任何地方。我有一个实体,它有 5 个导航属性到其他实体。例子:

public class Computer : DbEntity
{
    public virtual Ram Ram { get; set; }
    public Guid RamId { get; set; }

    public virtual Hdd Hdd { get; set; }
    public Guid HddId { get; set; }

    // etc. etc. you get the picture

}

为了构建视图,我为等创建了部分视图,Hdd并将Ram它们引用到主视图中:

@model ComputerSite.ViewModels.ComputerViewModel

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Computer Details</legend>
        ... some fields ...
    </fieldset>

    Html.RenderPartial("Create", "Ram");

    Html.RenderPartial("Create", "Hdd");
}

我对此进行了测试,它工作正常,所有数据都被发送回 ViewModel,并且可以保存在数据库中,所以我知道所有这些工作。问题来了, aComputer没有Ram。我希望能够选中一个框来说明不包括在内。并在提交表单时绕过Ram验证。

应该有一个非常简单和简单的方法,我不介意它是否是一个 JavaScript 函数,它会去改变data-客户端的一些属性。我只是不完全确定从哪里开始,自定义属性不是前进的方向。似乎只是改变一些领域。如果未选中复选框并且验证已经到位,我仍然希望验证字段,并且该位有效,因此为什么我要问这个问题,我只需要能够有选择地关闭不同部分表格。

哦,顺便说一句,我的任何实体类中的属性都没有该[Required]属性!

如果您使用 JavaScript,请提供示例。我已经 100% 精通它了。

4

2 回答 2

1

看看万无一失的验证项目,它有更多的验证方法,包括requiredif。http://foolproof.codeplex.com/

另一方面,您可以关闭一个设置以禁用隐式验证。查看此答案以了解详细信息https://stackoverflow.com/a/4845768/1563373

于 2013-05-17T10:25:48.180 回答
0

我只是禁用了我不想使用 JQuery 验证的表单部分,并且有效。

<script type="javascript">
    $(function () {
        function EnableControls() {
             $("#Computer_Cpu").removeAttr("disabled");
             $("#Computer_Motherboard").removeAttr("disabled");
        }

        function DisableControls() {
             $("#Computer_Cpu").attr("disabled", "disabled");
             $("#Computer_Motherboard").attr("disabled", "disabled");
        }

        var disabled = true;
        $("#Enable_Controls_Checkbox").change(function () {
             if (disabled) {
                 EnableControls();
             } else {
                 DisableControls();
             }
        });

        DisableControls();
    })

</script>

作为一个运行过程,这个脚本在加载时禁用我想要的所有控件。所以默认是你不能编辑它们。有一个称为复选框Enable_Controls_Checkbox,选中后将启用所述控件。attr(obj, obj)据我了解,添加/更改 HTML Dom 的一个属性,removeAttr(obj)正如它所说,删除一个属性。

对此可能有一个更优雅的解决方案,但它的工作原理也同样有效。

于 2013-05-20T08:59:40.953 回答