Razor @Html.ValidationMessageFor() 不显示 "validation error message"
Razor @Html.ValidationMessageFor() not displaying "validation error message"
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" })
@Html.ValidationMessageFor(model => model.FirstName)
为什么在将第二个参数传递给@Html.TextBoxFor 时字段正在验证但 "validation message" 没有出现?
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
使用仅接受一个参数(lambda 表达式)的重载时 "validation message" 显示正确。
据我了解,实际的 属性 没有被识别?
支持属性:
[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }
不显眼的验证库使用 name 属性识别 'things to display validation for'。并不是指定额外的属性会阻止它工作,而是您更改了名称 属性 并且没有在您的验证助手中反映新名称。
您可以停止更改文本框帮助程序中的名称属性 (如果您使用默认模型绑定器 return 您的视图是必需的),或者您可以使用
@Html.ValidationMessage("1.first_name")
上述方法不是一个好主意除非您正在使用JS/JQuery 验证并提交您的表单数据(通过 AJAX),原因由 Stephen 在对此答案的评论中给出。
您已经更改了 name
属性,因此它不仅不会 post 返回并绑定到您的模型,而且 jquery.validate.unobtrusive 现在无法再匹配输入后的控件与关联的验证消息具有不同的名称
<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" })
@Html.ValidationMessageFor(model => model.FirstName)
为什么在将第二个参数传递给@Html.TextBoxFor 时字段正在验证但 "validation message" 没有出现?
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
使用仅接受一个参数(lambda 表达式)的重载时 "validation message" 显示正确。
据我了解,实际的 属性 没有被识别?
支持属性:
[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }
不显眼的验证库使用 name 属性识别 'things to display validation for'。并不是指定额外的属性会阻止它工作,而是您更改了名称 属性 并且没有在您的验证助手中反映新名称。
您可以停止更改文本框帮助程序中的名称属性 (如果您使用默认模型绑定器 return 您的视图是必需的),或者您可以使用
@Html.ValidationMessage("1.first_name")
上述方法不是一个好主意除非您正在使用JS/JQuery 验证并提交您的表单数据(通过 AJAX),原因由 Stephen 在对此答案的评论中给出。
您已经更改了 name
属性,因此它不仅不会 post 返回并绑定到您的模型,而且 jquery.validate.unobtrusive 现在无法再匹配输入后的控件与关联的验证消息具有不同的名称
<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName