【发布时间】:2017-09-01 11:01:49
【问题描述】:
我正在尝试使用@Html.ValidationMessage,如下所示:
@Html.TextBox(Model.Key, "", attr)
@Html.ValidationMessage(Model.Key)
但是,我的验证消息没有显示。
如果我将Model.Key 打印到屏幕上,我会得到“FirstName”,但是如果我查看为上述代码创建的源代码,它会像这样创建它:
<input name="FirstName" class="form__control" data-msg-maxlength="This field is limited to 200 characters" data-rule-maxlength="200" data-rule-required="true" id="FirstName" placeholder="Please enter your first name" type="text" value="">
<span class="field-validation-valid" data-valmsg-for="field.FirstName" data-valmsg-replace="true"></span>
有谁知道它为什么将field. 附加到该验证消息跨度或如何摆脱它?
我试过手动输入:
@Html.ValidationMessage("FirstName")
这似乎仍然在 field. 前面添加
更新
这可能与我使用@Html.EditorFor(_ => field) 调用具有文本框和验证消息的部分有关吗? - 如果我将ValidationMessage 放在EditorFor 旁边,那么它可以正常工作(但不在位置)
【问题讨论】:
-
模型中有[必填]吗?
-
不,我手动创建模型错误:ModelState.AddModelError("FirstName", "Error");
-
你是在循环执行这个吗?
-
@StephenMuecke 我在一个循环中做编辑器:
@foreach (var field in group.FieldGroup) { @Html.EditorFor(_ => field) } -
那是你的问题。它还会产生其他问题,例如无法绑定到您的模型。您需要使用
for循环或EditorTemplate,如this answer中所述
标签: c# asp.net-mvc razor validationmessage