我最近遇到了一个小问题。创建新学生时,我必须测试StudentNo是否已在使用中,它必须是唯一的。测试在控制器中进行。当StudentNo已存在于数据库中时,我添加了一个自定义错误:

Student studentToCheck = dbContext.Students
                    .FirstOrDefault(r => r.StudentNo == student.StudentNo);
if (studentToCheck != null)
{
    ModelState.AddModelError("StudentNumberError",
                    "This Student No. is already in use");
}


虽然可以正常工作,但即使我设置了CSS样式,也不会设置TextBox的边框:

.field-validation-error
{
    color: Red;
}
.input-validation-error
{
    border-color: Red;
}


我检查了结果网站的HTML,看来我必须添加类input-validation-error,但我不知道如何。

视图的一部分:

<div class="editor-label">
    @Html.LabelFor(model => model.StudentNo)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.StudentNo)
    @Html.ValidationMessageFor(model => model.StudentNo)
    @Html.ValidationMessage("StudentNumberError")
</div>



和类定义的一部分:

[Required, Display(Name = "Student No.")]
[RegularExpression("^(ST[0-9]{4})$",
        ErrorMessage = "Student No. must be of the form: ST0000")]
public string StudentNo { get; set; }




编辑:

我试图手动添加类:

@Html.ValidationMessage("StudentNumberError", new { {"class", "input-validation-error"} } )


要么

@Html.ValidationMessage("StudentNumberError", new Dictionary<string, object>(){ {"class", "input-validation-error"} } )


但这些都不是:/

最佳答案

您正在为RadarNumberError添加错误,但是如果希望该字段突出显示,则应该为StudentNo添加错误:

ModelState.AddModelError("StudentNo",
                "This Student No. is already in use");


然后在您的视图上,您​​只需要呈现StudentNo的错误

<div class="editor-field">
    @Html.EditorFor(model => model.StudentNo)
    @Html.ValidationMessageFor(model => model.StudentNo)
</div>

关于c# - ValidationMessage不会更改文本编辑器边框的颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27036154/

10-11 16:54