【问题标题】:@Html.ValidationMessage adding prepending field. to key [duplicate]@Html.ValidationMessage 添加前置字段。键[重复]
【发布时间】: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(_ =&gt; field) 调用具有文本框和验证消息的部分有关吗? - 如果我将ValidationMessage 放在EditorFor 旁边,那么它可以正常工作(但不在位置)

【问题讨论】:

  • 模型中有[必填]吗?
  • 不,我手动创建模型错误:ModelState.AddModelError("FirstName", "Error");
  • 你是在循环执行这个吗?
  • @StephenMuecke 我在一个循环中做编辑器:@foreach (var field in group.FieldGroup) { @Html.EditorFor(_ =&gt; field) }
  • 那是你的问题。它还会产生其他问题,例如无法绑定到您的模型。您需要使用for 循环或EditorTemplate,如this answer中所述

标签: c# asp.net-mvc razor validationmessage


【解决方案1】:

就这样做

public class A
    {
        public int id { get; set; }
        [Required(ErrorMessage = "Please Enter Name")]
        public string name { get; set; }
}

【讨论】:

  • 看起来是真的。
猜你喜欢
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多