@ Html.TextAreaFor()始终根据需要进行验证,即使注释为可为空

时间:2016-06-10 01:48:53

标签: asp.net-mvc validation data-annotations

为什么TextAreaFor总是按照mvc中的要求进行验证,即使使用以下内容进行注释:

public class DepartmentViewModel
{
    public int Id { get; set; }

    [Required]
    [Display(Name ="Department Name")]
    public string DepartmentName { get; set; }


    [Display(Name = "Remarks")]
    [DataType(DataType.MultilineText)]
    [Required(AllowEmptyStrings = true), 
     DisplayFormat(ConvertEmptyStringToNull = false)]
    public string Remarks { get; set; }

    [Display(Name = "Cost Center")]
    public int ? CostCenterId { get; set; }
}

在View部分我使用它:

<div class="form-group">
                    @Html.LabelFor(m => m.Remarks, new { @class = "control-label col-md-2 col-sm-12" })
                    <div class="col-sm-12 col-md-8">
                        @Html.ValidationMessageFor(m => m.Remarks, "", new { @class = "text-danger" })
                        @Html.TextAreaFor(m => m.Remarks, new { @class = "form-control", style = "resize: none;", @rows = 10 })
                    </div>
</div>

如果我将其更改为 TextBoxFor ,一切正常。我想将备注标记为可选,但使用 TextAreaFor 它始终是必需的。

1 个答案:

答案 0 :(得分:0)

删除[Required][DisplayFormat]属性。您还可以删除[DataType]属性,因为只有在使用@Html.EditorFor()时才适用。您的财产只需要

[Display(Name = "Remarks")]
public string Remarks { get; set; }

尽管甚至不需要[Display]属性,因为它与属性名称相同。