2015-12-21 82 views
0

最初我在模型中有两个必需的日期时间属性。客户端验证可以正常工作。但是,当我注释掉其中一个属性所需的DataAnnotation时,MVC视图仍然生成data-val = true,等等...如何修复此问题,以便mvc视图不需要渲染字段。我试过$('#endDate')。rules('remove','required') 但它仍然检查必填字段。MVC 5 vew仍渲染必填字段

型号:

public class mymodel{ 
    ... 
    [Required] 
    public Datetime startDate { get; set;} 

    //[Required] 
    public Datetime endDate {get; set} 
} 

检视:

@Html.LabelFor(model => mode.endDate ....) 
@Html.EditorFor(model => model.endDate, new { htmlAttributes = new { @class = "form-control", id="endDate" } }) 

查看渲染

<input class="form-control text-box single-line hasDatepicker input-validation-error" data-val="true" data-val-date="The field endDate must be a date." data-val-required="The endDate field is required." id="endDate" ....> 
<span class="text-danger field-validation-error" ....> 
    <span for="endDate" class> The endDate field is required.</span> 
</span> 

回答

5

属性具有非空类型(如DateTime)固有地需要,有或没有Required属性,因为它们必须有一些的值。为了使其可选,您必须使用空值DateTime

public DateTime? endDate { get; set; }