为什么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 它始终是必需的。
答案 0 :(得分:0)
删除[Required]
和[DisplayFormat]
属性。您还可以删除[DataType]
属性,因为只有在使用@Html.EditorFor()
时才适用。您的财产只需要
[Display(Name = "Remarks")]
public string Remarks { get; set; }
尽管甚至不需要[Display]
属性,因为它与属性名称相同。