C# Razor@Html.ValidationMessageFor()不显示;验证错误消息";
将第二个参数传递给@Html.textbox以验证字段,但未显示“验证消息”是否有原因C# Razor@Html.ValidationMessageFor()不显示;验证错误消息";,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,将第二个参数传递给@Html.textbox以验证字段,但未显示“验证消息”是否有原因 @Html.RequiredLabelFor(x => x.FirstName) @Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" }) @Html.ValidationMessageFor(model => model.FirstName) 使用只接受一个参数(la
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { Name = "1.first_name", tabindex = "1" })
@Html.ValidationMessageFor(model => model.FirstName)
使用只接受一个参数(lambda表达式)的重载时,“验证消息”显示正确
据我所知,实际财产未被确认
支持属性:
@Html.RequiredLabelFor(x => x.FirstName)
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
不引人注目的验证库使用name属性标识“要显示验证的内容”。并不是说指定额外属性会使其停止工作,而是您更改了name属性,并且没有在验证助手中反映新名称 您可以停止更改textbox帮助器中的name属性(如果使用默认模型绑定器返回视图,则需要更改),也可以使用
[StringLength(100, ErrorMessage = "Max length 100 characters")]
[Required(ErrorMessage = "This field is required")]
[Display(Name = "First name")]
public string FirstName { get; set; }
上述方法不是一个好主意,除非您使用JS/JQuery(通过AJAX)验证和提交表单数据,因为Stephen在对该答案的评论中给出了原因。您已经更改了
name
属性,因此它不仅不会发回并绑定到您的模型,jquery.validate.unobtrusive现在无法再匹配控件,因为输入的名称与关联的验证消息的名称不同
@Html.ValidationMessage("1.first_name")
//没有名为FirstName的控件
不要使用@Html.ValidationMessage(“1.名字”)
。这不仅意味着回发时所有模型绑定都会丢失,而且如果返回视图,则此属性将永远不会显示ModelState
错误
<input name="1.first_name" ... />
<span .. data-valmsg-for="FirstName" ..></span> // There is no control named FirstName