繁体   English   中英

Razor @ Html.ValidationMessageFor()没有显示“验证错误消息”

[英]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.TextBox时是否有原因正在验证该字段但是没有出现“验证消息”?

@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)

当使用只接受一个参数(lambda表达式)的重载时,“验证消息”正在正确显示。

据我所知,实际的财产没有得到承认?

支持财产:

[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }

不显眼的验证库使用name属性标识“要显示验证的内容”。 并不是指定额外的属性会阻止它工作,但是你已经更改了name属性而没有反映验证助手中的新名称。

您可以停止更改文本框助手中的name属性(如果使用默认模型绑定器返回视图 ,则必需) ,或者您可以使用

@Html.ValidationMessage("1.first_name")

除非您使用JS / JQuery来验证和提交表单数据(通过AJAX), 否则上述方法不是一个好主意,原因是Stephen对此答案的评论。

您已经更改了name属性,因此它不仅不会回发并绑定到您的模型,因此jquery.validate.unobtrusive现在不再匹配控件,因为输入的名称与关联的验证消息不同

<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM