使用mvc 4 razor引擎显示3个文本框的一条错误消息

4 validation asp.net-mvc razor asp.net-mvc-4

我目前正在验证一个传真号码,我需要在其中只显示所有3个文本框的一条错误消息.像摘要一样

它似乎有点挑剔/愚蠢的业务需求,因为有3个文本框,所有都是自己需要但如果有人在此之前做到这一点会很好.

在我的模型中:

    [Required(ErrorMessage = "Fax is Required...")]
    [RegularExpression("^[0-9]{3}$", ErrorMessage = "Not a valid fax #")]
    public string poc_fax_1 { get; set; }
    [Required(ErrorMessage = "Fax is Required...")]
    [RegularExpression("^[0-9]{3}$", ErrorMessage = "Not a valid fax #")]
    public string poc_fax_2 { get; set; }
    [Required(ErrorMessage = "Fax is Required...")]
    [RegularExpression("^[0-9]{4}$", ErrorMessage = "Not a valid fax #")]
    public string poc_fax_3 { get; set; }
Run Code Online (Sandbox Code Playgroud)

视图:

(@Html.TextBoxFor(model => model.poc_fax_1, new { @class = "input-mini", @maxlength=3 })) -
                            @Html.ValidationMessageFor(m=>m.poc_fax_1)
                            @Html.TextBoxFor(model => model.poc_fax_2, new { @class = "input-mini", @maxlength=3 }) -
                            @Html.ValidationMessageFor(m=>m.poc_fax_2)
                            @Html.TextBoxFor(model => model.poc_fax_3, new { @class = "input-mini", @maxlength=4 })
                            @Html.ValidationMessageFor(m=>m.poc_fax_3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意:图像是在我修复数字条目之前,因此更新了问题.

Dyl*_*nck 6

如果3个字段一起有效,您可以检查控制器操作,而不是对每个传真号码使用注释

这样的事情:检查你的控制器

if (faxfield1 != null && faxfield2 != null && faxfield3 != null)
{
    ModelState.AddModelError("FaxError", "Fax is not valid");
}
Run Code Online (Sandbox Code Playgroud)

然后在你的视图中使用它(一次)

@Html.ValidationMessage("FaxError")
Run Code Online (Sandbox Code Playgroud)

注意:这只是展示你如何以其他方式做到这一点,你将不得不使用其他验证c :)